OOP Lecture 03 - Inheritance
OOP Lecture 03 - Inheritance
Programming
Inheritance
Inheritance
Inheritance is a fundamental object-oriented
design technique used to create and organize
reusable classes
We will focuses on:
deriving new classes from existing classes
the protected modifier
creating class hierarchies
abstract classes
indirect visibility of inherited members
designing for inheritance
8-2
Outline
• Creating Subclasses
• Overriding Methods
• Class Hierarchies
• Inheritance and Visibility
• Designing for Inheritance
• Inheritance and GUIs
• The Timer Class
8-3
Creating a Subclass
8-4
Inheritance
The existing class is called the parent class, or super class, or base class
8-5
Inheritance
That is, the child class inherits the methods and data defined
by the parent class
8-6
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
• Proper inheritance creates an is-a relationship,
meaning the child is a more specific version of the
parent
8-7
Inheritance
A programmer can tailor a derived class as needed
by adding new variables or methods, or by
modifying the inherited ones
8-9
8-10
8-11
8-12
The protected Modifier
Visibility modifiers affect the way that class members can
be used in a child class
8-13
The protected Modifier
The protected modifier allows a child class to reference
a variable or method directly in the child class
8-14
The protected Modifier
Protected variables and methods can be shown with a hash (
# )symbol preceding them in UML diagrams
NOTE:
All methods & variables (even those declared private) are inherited by
the child class
8-15
Class Diagram for Words
Book
# pages : int
+ pageMessage() : void
Words Dictionary
- definitions : int
+ main (args : String[]) : void
+ definitionMessage() : void
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
8-17
8-18
8-19
8-20
The super Reference
8-21
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
8-22
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
8-23
8-24
8-25
8-26
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
8-27
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
8-28
Class Hierarchies
A child class of one parent can be the parent of another
child, forming a class hierarchy
Business
RetailBusiness ServiceBusiness
8-29
Class Hierarchies
Two children of the same parent are called siblings
8-30
The Object Class
A class called Object is defined in the java.lang package of
the Java standard class library
All classes are derived from the Object class
8-31
The Object Class
The Object class contains a few useful methods, which are
inherited by all classes
For example, the toString method is defined in the Object
class
Every time we define the toString method, we are actually
overriding an inherited definition
The toString method in the Object class is defined to return a
string that contains the name of the object’s class along with some
other information.
8-32
The Object Class
The equals method of the Object class returns true if two
references are aliases
We can override equals in any class to define equality in some
more appropriate way
As we've seen, the String class defines the equals method to
return true if two String objects contain the same characters
The designers of the String class have overridden the equals
method inherited from Object in favor of a more useful version
8-33