Inheritance, Polymorphism,
and Interfaces
Chapter 8
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Objectives
• Describe polymorphism and inheritance in
general
• Define interfaces to specify methods
• Describe dynamic binding
• Define and use derived classes in Java
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Inheritance Basics: Outline
• Derived Classes
• Overriding Method Definitions
• Overriding Versus Overloading
• Private Instance Variables and Private
Methods of a Base Class
• UML Inheritance Diagrams
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Inheritance Basics
• Download from SavitchSrc link:
• ch08/
InheritanceDemo.java
Person.java
Student.java
Undergraduate.java
UndergraduateDemo.java
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Inheritance Basics
• Inheritance allows programmer to define a
general class
• Later you define a more specific class
Adds new details to general definition
• New class inherits all properties of initial,
general class
• View Person.java
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Derived Classes
• Figure 8.1 A class hierarchy
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Derived Classes
• Class Person used as a base class
Also called superclass
• Now we declare derived class Student
Also called subclass
Inherits methods from the superclass
• View Student.java
class Student extends Person Sample
Sample
screen
• View InheritanceDemo.java screen
output
output
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Overriding Method Definitions
• Note method writeOutput in class
Student
Class Person also has method with that name
• Method in subclass with same signature
overrides method from base class
Overriding method is the one used for objects
of the derived class
• Overriding method must return same type
of value
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Overriding Versus Overloading
• Do not confuse overriding with overloading
Overriding takes place in subclass – new
method with same signature
• Overloading
New method in same class with different
signature
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Private Instance Variables, Methods
• Consider private instance variable in a
base class
It is not inherited in subclass
It can be manipulated only by public accessor,
modifier methods
• Similarly, private methods in a superclass
not inherited by subclass
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
UML Inheritance Diagrams
• Figure 8.2 A class
hierarchy in
UML notation
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
UML Inheritance Diagrams
• Figure 8.3
Some details
of UML class
hierarchy
from
figure 8.2
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming with Inheritance:
Outline
• Constructors in Derived Classes
• The this Method – Again
• Calling an Overridden Method
• Derived Class of a Derived Class
• Type Compatibility
• The class Object
• A Better equals Method
• Abstract Classes
• Dynamic Binding and Inheritance
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Constructors in Derived Classes
• A derived class does not inherit
constructors from base class
Constructor in a subclass must invoke
constructor from base class
• Use the reserve word super
Must be first action in the constructor
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
The this Method – Again
• Also possible to use the this keyword
Use to call any constructor in the class
• When used in a constructor, this calls
constructor in same class
Contrast use of super which invokes
constructor of base class
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Calling an Overridden Method
• Reserved word super can also be used to
call method in overridden method
• Calls method by same name in base class
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming Example
• A derived class of a derived class
• View Undergraduate.java
• Has all public members of both
Person
Student
• This reuses the code in superclasses
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Programming Example
• Figure 8.4
More details
of the UML
class
hierarchy
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Type Compatibility
• In the class hierarchy
Each Undergraduate is also a Student
Each Student is also a Person
• An object of a derived class can serve as
an object of the base class
Note this is not typecasting
• An object of a class can be referenced by
a variable of an ancestor type
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Type Compatibility
• Be aware of the "is-a" relationship
A Student is a Person
• Another relationship is the "has-a"
A class can contain (as an instance variable)
an object of another type
If we specify a date of birth variable for
Person – it "has-a" Date object
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Type Compatibility
• An object can have more than one type
• In an assignment statement where left
and right are object references:
left = right; // ok if right “is-a” left
• Example:
Student s = new Student();
Person p = new Person();
p = s; // ok – a Student “is-a” Person
s = p; // illegal – a Person is not a Student
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
The Class Object
• Java has a class that is the ultimate
ancestor of every class (“Eve class”)
The class Object
• Thus possible to write a method with
parameter of type Object
Actual parameter in the call can be object of
any type
• Example: method
println(Object theObject)
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
The Class Object
• Class Object has some methods that every
Java class inherits
• Examples
Method equals
Method toString
• Method toString called when
println(theObject) invoked
Best to define your own toString to handle this
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
A Better equals Method
• Download examples:
Parent.java Child.java
• Programmer of a class should override
method equals from Object
• Use equals method in Student.java as a
model for writing your own.
• View equals method in Student.java:
public boolean equals(Object theObject)
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism: Outline
• Class interfaces
• Java interfaces
• Implementing an interface
• An interface as a type
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism
• Inheritance allows you to define a base
class and derive classes from the base
class
• Polymorphism allows you to make
changes in the method definition for the
derived classes and have those changes
apply to methods written in the base class
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
An Inheritance as a Type
• A method can substitute one object for
another
Called polymorphism
• This is made possible by mechanism
Dynamic binding
Also known as late binding
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Dynamic Binding and Inheritance
• When an overridden method invoked
Action matches method defined in class used
to create object using new
Not determined by type of variable naming the
object
• Variable of any ancestor class can
reference object of descendant class
Object always remembers which method
actions to use for each method name
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism
• Consider an array of Person
Person[] people = new
Person[4];
• Since Student and
Undergraduate are types of
Person, we can assign them
to Person variables
people[0] = new
Student("DeBanque, Robin",
8812);
people[1] = new
Undergraduate("Cotty, Manny",
8812, 1);
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism
• Given:
Person[] people = new Person[4];
people[0] = new Student("DeBanque, Robin",
8812);
• When invoking people[0].writeOutput();
• Which writeOutput() is invoked, the one
defined for Student or the one defined for
Person?
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism
• Given:
Person[] people = new Person[4];
people[0] = new Student("DeBanque, Robin",
8812);
• When invoking people[0].writeOutput();
• Which writeOutput() is invoked, the one
defined for Student or the one defined for
Person?
• Answer: The one defined for Student
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Polymorphism Example
• Download PolymorphismDemo.java
• Output:
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Class Interfaces
• Consider a set of behaviors for pets
Be named
Eat
Respond to a command
• We could specify method headings for
these behaviors
• These method headings can form a class
interface
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Class Interfaces
• Now consider different classes that
implement this interface
They will each have the same behaviors
Nature of the behaviors will be different
• Each of the classes implements the
behaviors/methods differently
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Java Interfaces
• A program component that contains
headings for a number of public methods
Will include comments that describe the
methods
• Interface can also define public named
constants
• Download all source files from the
SavitchSrc link: ch08/polymorphism
• View Measurable.java
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Java Interfaces
• Interface name begins with uppercase
letter
• Stored in a file with suffix .java
• Interface does not include
Declarations of constructors
Instance variables
Method bodies
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Implementing an Interface
• To implement an interface, a class must
Include the phrase
implements Interface_name
Define each specified method
• View Rectangle.java:
class Rectangle implements Measurable
• View another class, Circle.java, which
also implements Measurable
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
An Inheritance as a Type
• Possible to write a method that has a parameter
as an interface type
An interface is a reference type
• Program invokes the method passing it an object
of any class which implements that interface
• See Driver.java, Driver2.java,
Driver3.java
box has 2 types: Rectangle and Measurable
disc has 2 types: Circle and Measurable
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Abstract Classes
• Classes can be designed to be a base
class for other classes
Some methods must be redefined for each
subclass
These methods should be declared abstract –
a method that has no body
• This makes the class abstract
• You cannot create an object of an abstract
class – thus its role as base class
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Abstract Classes
• Not all methods of an abstract class are
abstract methods
• Abstract class makes it easier to define a
base class
Specifies the obligation of designer to override
the abstract methods for each subclass
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Abstract Classes
• Cannot have an instance of an abstract
class
But OK to have a parameter of that type
• Think of an abstract class as something
between an interface (no methods
implemented) and a complete class
definition (all methods implemented)
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Dynamic Binding – Quiz
• Download Examples/PeopleDemo.java
• What gets printed when calling
einTest(peter);
einTest(hans);
einTest(maria);
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Dynamic Binding – Quiz
• Download Examples/PeopleDemo.java
• What gets printed when calling
einTest(peter);
→ Object "Student's name: Peter" is a Student :: class Student
einTest(hans);
einTest(maria);
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Dynamic Binding – Quiz
• Download Examples/PeopleDemo.java
• What gets printed when calling
einTest(peter);
→ Object "Student's name: Peter" is a Student :: class Student
einTest(hans);
→ Object "Person's name: Hans" is a Person :: class Person
einTest(maria);
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Dynamic Binding – Quiz
• Download Examples/PeopleDemo.java
• What gets printed when calling
einTest(peter);
→ Object "Student's name: Peter" is a Student :: class Student
einTest(hans);
→ Object "Person's name: Hans" is a Person :: class Person
einTest(maria);
→ Object "Student's name: Maria" is a Person :: class Student
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
• Derived class obtained from base class by
adding instance variables and methods
Derived class inherits all public elements of
base class
• Constructor of derived class must first call
a constructor of base class
If not explicitly called, Java automatically calls
default constructor
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
• Within constructor
this calls constructor of same class
super invokes constructor of base class
• Method from base class can be overridden
Must have same signature
• If signature is different, method is
overloaded
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
• Overridden method can be called with
preface of super
• Private elements of base class cannot be
accessed directly by name in derived class
• Object of derived class has type of both
base and derived classes
• Legal to assign object of derived class to
variable of any ancestor type
• Every class is descendant of class Object
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
• An interface contains
Headings of public methods
Definitions of named constants
No constructors, no private instance variables
• Class which implements an interface must
Define a body for every interface method
specified
• Interface enables designer to specify
methods for another programmer
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved
Summary
• Interface is a reference type
Can be used as variable or parameter type
• Dynamic (late) binding enables objects of
different classes to substitute for one
another
Called polymorphism
JAVA: An Introduction to Problem Solving & Programming, 6 th Ed. By Walter Savitch
ISBN 0132162709 © 2012 Pearson Education, Inc., Upper Saddle River, NJ. All Rights Reserved