An inherited class is an abstraction of an object, and an inherited class is an abstraction of a set of classes to better model the real world. Improve code reuse! Extands stands for “extend”, and subclasses are extensions of the parent class that encapsulate/hide polymorphisms to accommodate multiple variations in requirements, making code more generic!

A subclass inherits its parent class and gets all the attributes and methods of the parent class (except for the constructor of the parent class). In Java, classes have single inheritance, not multiple inheritance like in C++. Multiple inheritance causes confusion, making inheritance chains too complex and systems difficult to maintain. Multiple inheritance, which is intended to achieve code reuse, introduces complexity and confuses the relationship between system classes. If extends is not called when you define a class, its parent is java.lang.Object. Different names: superclass, parent, base, subclass, derived