When designing the Selenium page object classes, the first step is to create an abstract base class that will store all the methods, locators, and properties that are common to all the pages in the application under test. It will also store all the abstract methods that the base class wants to enforce on each subclass derived from it. When a subclass is created that extends this base class, it will inherit all these object components.
This class will also initialize all the page objects included in it, as well as in each subclass, by calling the WebDriver page factory class in its constructor. In Java, abstract classes cannot be instantiated, but they can be subclassed.