Lecture 13 Inheritance
Lecture 13 Inheritance
Technology
CIC-212 Java Programming
Inheritance
Inheritance
Inheritance is a fundamental object-
oriented design technique used to
create and organize reusable classes.
This presentation focuses on:
deriving new classes from existing classes
the protected modifier
creating class hierarchies
abstract classes
indirect visibility of inherited members
designing for inheritance
Inheritance
Inheritance allows a software developer to derive a
new class from an existing one.
The existing class is called the parent class, or super
class, 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 by the parent class
We can refer to these inherited methods and variables
as if they were declared locally in the class
Inheritance
Inheritance relationships are shown in a UML
class diagram using a solid arrow with an
unfilled triangular arrowhead pointing to the
parent class.
Vehicle
Car
Book
# pages : int
+ pageMessage() :
void
Words Dictionary
- definitions : int
+ main (args : String[]) :
void + definitionMessage() :
void
Example
Example
Example
The protected Modifier
Visibility modifiers affect the way that class
members can be used in a child class.
Variables and methods declared with private
visibility cannot be referenced by name in a
child class.
They can be referenced in the child class if they
are declared with public visibility -- but public
variables violate the principle of encapsulation.
There is a third visibility modifier that helps in
inheritance situations: protected.
The protected Modifier
The protected modifier allows a child
class to reference a variable or method
directly in the child class.
It provides more encapsulation than
public visibility, but is not as tightly
encapsulated as private visibility.
A protected variable is visible to any class
in the same package as the parent class.
The super Reference
Constructors are not inherited, even
though they have public visibility.
Yet we often want to use the parent's
constructor to set up the "parent's part"
of the object.
The super reference can be used to
refer to the parent class, and often is
used to invoke the parent's constructor.
Example
Example
Example
The super Reference
A child’s constructor is responsible for
calling the parent’s constructor.
If the child constructor invokes the
parent (constructor) by using the super
reference, it
MUST be the first line of code of the
constructor.
The super reference can also be used to
reference other variables and methods
defined in the parent class.
Multiple Inheritance
Java supports single inheritance, meaning that
a derived class can have only one parent class.
Multiple inheritance allows a class to be
derived from two or more classes, inheriting
the members of all parents.
Collisions, such as the same variable name in
two parents, have to be resolved.
Java does not support multiple inheritance.
In most cases, the use of interfaces gives us
aspects of multiple inheritance without the
overhead.
Overriding Methods
A child class can override the definition
of an inherited method in favor of its
own.
The new method must have the same
signature as the parent's method, but
can have a different body.
The type of the object executing the
method determines which version of the
method is invoked.
Example
Example
Example
Overriding
A method in the parent class can be
invoked explicitly using the super
reference.
If a method is declared with the final
modifier, it cannot be overridden.
The concept of overriding can be applied
to data and is called shadowing
variables.
Shadowing variables should be avoided
because it tends to cause unnecessarily
Overloading vs. Overriding
Overloading deals with multiple methods with
the same name in the same class, but with
different signatures.
Overriding deals with two methods, one in a
parent class and one in a child class, that have
the same signature.
Overloading lets you define a similar operation
in different ways for different parameters.
Overriding lets you define a similar operation in
different ways for different object types.
Class Hierarchies
A child class of one parent can be the parent of
another child, forming a class hierarchy.
Business
RetailBusin ServiceBusine
ess ss