Inheritance
• Methods allows a software developer to reuse a sequence of
statements
• Inheritance allows a software developer to reuse classes by
deriving a new class from an existing one
• The existing class is called the parent class, or superclass, or
base class
• The derived class is called the child class or subclass.
• As the name implies, the child inherits characteristics of the
parent
• That is, the child class inherits the methods and data defined
for the parent class Inheritance relationships are often shown
graphically in a class diagram, with the arrow pointing to the parent class.
Deriving Subclasses
In Java, we use the reserved word extends to establish an
inheritance relationship
class Animal
{
// class contents
int weight;
public void int getWeight() {...}
}
class Bird extends Animal
{
// class contents
public void fly() {...};
}
Forms of Inheritance
Inheritance is used in a variety of way and for a variety of different
purposes .
• Inheritance for Specialization
• Inheritance for Specification
• Inheritance for Construction
• Inheritance for Extension
• Inheritance for Limitation
• Inheritance for Combination
One or many of these forms may occur in a single case.
Summary of Forms of Inheritance
• Specialization. The child class is a special case of the parent class; in other words, the child class is a subtype of the parent class.
• Specification. The parent class defines behavior that is implemented in the child class but not in the parent class.
• Construction. The child class makes use of the behavior provided by the parent class, but is not a subtype of the parent class.
• Generalization. The child class modifies or overrides some of the methods of the parent class.
• Extension. The child class adds new functionality to the parent class, but does not change any inherited behavior.
• Limitation. The child class restricts the use of some of the behavior inherited from the parent class.
• Variance. The child class and parent class are variants of each other, and the class- subclass relationship is arbitrary.
• Combination. The child class inherits features from more than one parent class. This is multiple inheritance and will be the subject of a later chapter.
The Benefits of Inheritance
• Software Reusability (among projects)
• Increased Reliability (resulting from reuse and sharing of
well-tested code)
• Code Sharing (within a project)
• Consistency of Interface (among related objects)
• Software Components
• Rapid Prototyping (quickly assemble from pre-existing
components)
• Polymorphism and Frameworks (high-level reusable
components)
• Information Hiding
The Costs of Inheritance
• Execution Speed
• Program Size
• Message-Passing Overhead
• Program Complexity (in overuse of inheritance)
Using final with inheritance
• final keyword is used declare constants which can not change its value of definition.
• final Variables can not change its value.
• final Methods can not be Overridden or Over Loaded
• final Classes can not be extended or inherited
Preventing Overriding with final
• A method declared final cannot be overridden in any
sub-class:
class A {
final void meth() {
System.out.println("This is a final method.");
}
}
This class declaration is illegal:
class B extends A {
void meth() {
System.out.println("Illegal!");
}
}
Preventing Inheritance with final
• A class declared final cannot be inherited – has no sub-
classes.
final class A { ... }
• This class declaration is considered illegal:
class B extends A { ... }
• Declaring a class final implicitly declares all its methods
final.
• It is illegal to declare a class as both abstract and final.