You are on page 1of 25

Inheritance

Some examples and/or figures were borrowed (with permission)


from slides prepared by Prof. H. Roumani
A thing sometimes can be described as a
specialized type of another thing
E.g., a car is a particular type of vehicle
E.g., a dog is a particular type of animal
E.g., a laptop is a particular type of computer
E.g., a cell phone is a particular type of telephone
Similarly, a class sometimes can be
described as an extension or abstraction of
another class
The extended class (child) inherits all the
features of the original class (parent) and
can implements new/different features for
its particular purpose
EECS1020 F14 (Steven C.) 2
Child (class) = Subclass
Parent (class) = Superclass
When C inherits from P, every feature of P is in C
C inherits from P = C extends P
Inheritance = is-a relationship = specialization
Inheritance hierarchy: (graphical) organization of
classes related by inheritance

EECS1020 F14 (Steven C.) 3


P G R

Specific
General

P A B

C
C K L M N

(a) (b) (c)

EECS1020 F14 (Steven C.) 4


A B

EECS1020 F14 (Steven C.) 5


Shape

Ellipse Quadrilateral

Circle Rectangle Trapezoid

Square

EECS1020 F14 (Steven C.) 6


Situation: The University wants a program to
manage information about past, present, and
future students
Task: Give a UML class diagram illustrating
the inheritance hierarchy
Identify the specific types of students
Identify how they relate using is-a relationships

EECS1020 F14 (Steven C.) 7


Student

Applicant Registrant Alumnus

UnderGraduate Graduate

EECS1020 F14 (Steven C.) 8


Child class sometimes requires a method with
specialized implementation to take advantage of
features not available in the parent class
Overriding:
Child class keeps parent methods signature and return
type
Overloading:
Child class keeps parent methods name only (number
or types of parameter are different)
Shadowing:
Child and parent have field with same name (regardless
of type)
EECS1020 F14 (Steven C.) 9
CreditCard class:
Charge purchases
Pay balance
RewardCard class:
(similar features of CreditCard class)
Earn reward points

EECS1020 F14 (Steven C.) 10


Some features are common:
Credit limit
Card balance
Issue date
Expiry date
Card number
Holders name
Some features are unique to RewardCards
Points balance

EECS1020 F14 (Steven C.) 11


Examine the API of CreditCard and
RewardCard
Identify inherited features
Identify overridden features

Other inheritance hierarchies are detailed on


pages 357 - 359

EECS1020 F14 (Steven C.) 12


When a parent is expected, a child is
accepted

This allows the same code to process both


parent classes and their (grand) children
For example, a program intended to handle
CreditCard objects will be able to handle
RewardCard objects without modification

EECS1020 F14 (Steven C.) 13


The following is correct:
CreditCard cc1 = new CreditCard(9, Adam);
CreditCard cc2 = new RewardCard(9, Adam);
Subsequently, any method that can be called on a
CreditCard can also be called on a RewardCard
The following is NOT correct (why?):
RewardCard rc = new CreditCard(9, Adam);

EECS1020 F14 (Steven C.) 14


Shape

Ellipse Quadrilateral

Circle Rectangle Trapezoid

Square

EECS1020 F14 (Steven C.) 15


Ellipse: a rounded shape
Circle: an ellipse whose height and width are
equal
Thus, a circle is an ellipse, but an ellipse is
not necessarily a circle

Quadrilateral: a four-sided shape


Rectangle: a quadrilateral with four sides meeting
at 90
Square: a rectangle with four sides of equal length
Thus, a square is a rectangle, but a
rectangle is not necessarily a square

EECS1020 F14 (Steven C.) 16


Used to test if a reference points to an
instance of the parent or child class

CreditCard cc1 = new CreditCard(9, Adam);


CreditCard cc2 = new RewardCard(9, Adam);

cc1 instanceof CreditCard true


cc2 instanceof RewardCard true
cc2 instanceof CreditCard true (by
substitutability )
cc1 instanceof RewardCard false

EECS1020 F14 (Steven C.) 17


Binding: validation of a method call
Early binding:
Occurs at compile-time
Binding failure results in a compile-time error
(i.e., cannot find method)
Late binding:
Applicable only when (explicit) inheritance is used
Occurs at run-time

EECS1020 F14 (Steven C.) 18


CreditCard cc2 = new RewardCard(9, Adam);
cc2. getBalance();
Early binding:
Verifies getBalance() method in CreditCard class
Late binding:
Determines cc2 points to a RewardCard object
Cannot find getBalance() method in RewardCard
because getBalance() was not overridden in
RewardCard
Calls getBalance() method in CreditCard class instead

EECS1020 F14 (Steven C.) 19


CreditCard cc2 = new RewardCard(9, Adam);
cc2.charge(500.00);
Early binding:
Verifies charge(double amount) is a method in the
CreditCard class
Late binding:
Determines cc2 points to a RewardCard object
Calls charge(double amount) method in
RewardCard class

EECS1020 F14 (Steven C.) 20


The ability of a method to take on various
forms

Occurs when early binding targets a method


in a parent class and late binding targets the
method with the same signature in a (grand)
child class
E.g.: the charge(double amount) method from the
previous example

EECS1020 F14 (Steven C.) 21


Wrong:
CreditCard cc2 = new RewardCard(9, Adam);
balance = cc2.getPointBalance();
Early binding will fail because CreditCard does not
have a getPointBalance() method
Correct:
CreditCard cc2 = new RewardCard(9, Adam);
if (cc2 instanceof RewardCard)
{ balance = ((RewardCard)cc2).getPointBalance();
}

EECS1020 F14 (Steven C.) 22


Interfaces:
Define only method signatures
Methods have no implemented body
Allow implementer to define class requirements to
other implementers
Abstract classes:
Only some (not all) methods are implemented
Allow implementers implement some methods and
define requirements for others

EECS1020 F14 (Steven C.) 23


Classes: public class ClassName
Abstract: public abstract class ClassName
Interface: public interface InterfaceName
Interface names appear in italics in the API
Both can be used as types for declarations
Neither can be instantiated
Look for a class that extends it or a (static)
method that returns a pre-made instance of it
E.g., Try to create an instance of Calendar

EECS1020 F14 (Steven C.) 24


The Object class is the root of all inheritance
hierarchies
The Object class defines methods applicable
to and required by all Java classes.
equals(Object other)
toString()

To ensure all classes have these methods, all
classes implicitly extend the Object class

EECS1020 F14 (Steven C.) 25