SlideShare una empresa de Scribd logo
1 de 116
Inheritance
Chapter 7
Objectives
• become acquainted with inheritance
• learn how to define and use derived classes
• learn about dynamic binding and
polymorphism
• (optional) learn about the class JFrame used to
produce windowing interfaces
Outline
•
•
•
•

Inheritance Basics
Programming with Inheritance
Dynamic Binding and Polymorphism
(optional) Graphics Supplement
Inheritance Basics: Outline
•
•
•
•
•
•

Introduction to Inheritance
Derived Classes
Overriding Method Definitions
Overriding vs. Overloading
The final Modifier
UML Inheritance Diagrams
Introduction to Inheritance
• Inheritance allows us to define a general
class and then more specialized classes
simply by adding new details to the more
general class definition.
• A more specialized class inherits the
properties of the more general class, so that
only new features need to be programmed.
Introduction to Inheritance,
cont.
• example
– General class Vehicle might have instance
variables for weight and maximum
occupancy.
– More specialized class Automobile might
add instance variables for wheels, engine
size, and license plate number.
– General class Vehicle might also be used
define more specialized classes Boat and
Airplane.
Programming Example: A
Base Class
• class Person
Derived Classes
• Consider a college record-keeping system
with records about students, faculty and
(nonteaching) staff.
Derived Classes, cont.
Derived Classes, cont.
• Even though your program may not need any
Person or Employee objects, these classes can
be useful for consolidating and representing
features common to all subclasses.
– For example, all students, faculty, and staff
have names, and these names may need
to be initialized, changed, retrieved, or
printed.
Derived Classes, cont.
is a derived class of class Person
Person is called the base class.

• class Student

and class
Derived Classes, cont.
• public class Student extends Person
Derived Classes, cont.
• syntax
public class Derived_Class_Name extends
Base_Class_Name
{
Declarations_of_Added_Instance
_Variables
Definitions_of_Added_and_Overridden_Method
s
}
Derived Classes, cont.
• When you define a derived class, you declare
only the added instance variables and you
define only the added and overridden
methods.
• The variables and methods of the parent
class which are not declared private are
inherited automatically.
Derived Classes, cont.
• class InheritanceDemo
Derived Classes, cont.
Overriding Method Definitions
• Notice that class Student has a method
writeOutput with no parameters, and class
Person also has a method writeOutput with no
parameters, that class Student inherits.
• When a derived class defines a method with
the same name and the same number and
types of parameters as a method in the base
class, the method in the derived class
overrides the method in the base class.
Overriding Method Definitions,
cont.
• When overriding a method, you can change
the method definition to anything you wish,
but you cannot change the method’s heading
or the method’s return type.
Overriding vs. Overloading
• When you override a method, the new
method definition in the derived class has the
same name and the same number of types of
parameters as the method definition in the
base class.
• When the name is the same, but the number
or types of the parameters differs, whether in
the base class or in the derived class, the
method is overloaded in the derived class.
Overriding vs. Overloading,
cont.
• example:
public String getName(String title)

in class Student and
public String getName()

in class Person overload method getName
since the two methods have different
parameter lists.
– Both methods are available in class
Student.
The final Modifier
• You can prevent a method definition from
being overridden by adding the word final to
the method heading.
• example
public final void someMethod()
{
…

• This is used rarely, but it produces more
efficient code.
The final Modifier, cont.
• An entire class can be declared final, in
which case it cannot be used as a base class
to derive another class.
Private Instance Variables in
the Base Class
• Private instance variables inherited from a
base class cannot be accessed directly.
• Instead, they must be accessed using a
method that is not declared private.
• While this may seem inconvenient, it provides
an important mechanism for controlling
access and changes to instance variables in
the base class.
Private Methods in the Base
Class
• Like private instance variables, private
method inherited from a base class cannot be
accessed directly.
• Instead, they, too, must be accessed using a
method that is not declared private.
• This, too, provides an important mechanism
for controlling access to methods in the base
class.
Private Methods in the Base
Class
• Since private methods typically serve as
helping methods, their use always is limited to
the class in which they are defined.
UML Inheritance Diagrams
• Typically, a UML class diagram shows only
as much as is needed for the design task at
hand.
UML Inheritance Diagrams,
cont.
UML Inheritance Diagrams,
cont.
• An arrowhead points from a derived class to
its base class, indicating an is-a relationship.
– For example, a Student is-a Person.
• Inherited instance variables and methods can
be found by following the arrowheads.
UML Inheritance Diagrams,
cont.
• more details of the inheritance hierarchy
Programming with Inheritance:
Outline
•
•
•
•

Constructors in Derived Classes
(optional) The this Method
Calling an Overridden Method
(optional) A Subtle Point About Overloding
and Overriding
• The class Object
• Abstract Classes
• Interfaces
Constructors in Derived
Classes
• A base class has its own constructors.
– Their purpose typically is to initialize the
instance variables declared in the base
class.
• A derived class has its own constructors.
– Their purpose typically is to call a
constructor in the base class, and then to
initialize the instance variables declared in
the derived class.
Constructors in Derived
Classes, cont.
• To call a constructor in the base class, use
super(Values_for_Instance_Variables
_Declared_in_the_Base_Class);

• example
super(initialName);

not
Person(initialName); //ILLEGAL
Using super
• The call to the constructor in the base class
(using super) must be the first action taken in
the constructor of a derived class.
• When no call to the constructor in the base
class is included, Java automatically includes
a call to the default constructor in the base
class.
Using super, cont.
• equivalent definitions:
public Student()
{
super();
studentNumber= 0;
}

and
public Student()
{
studentNumber= 0;
}
(optional) The this Method
• Within the definition of one constructor, it can
be appropriate to call another constructor in
the same class.
• The keyword this is used to call another
constructor in the same class.
• example
this(initialName, 0)
(optional) The this Method,
cont.
• Any use of this must be the first action in the
constructor definition.
– Thus, a constructor definition cannot
contain a call using super and a call using
this.
• To use both super and this, include a call
using this in one constructor and a call using
super in the constructor called using this.
Calling an Overridden Method
can be used to call a method in the
base class that has been overridden in the
derived class.
• example
• super

super.writeOutput();

• However, you cannot repeat the use of super
to invoke a method in some ancestor class
other than the immediate base (parent) class.
Programming Example:
Multilevel Derived Classes
• Class Undergraduate can be derived from class
Student which is derived from class Person.
• Class Undergraduate will have all the instance
variables and methods of class Student which
has all the instance variables and methods of
class Person.
Programming Example:
Multilevel Derived Classes,
cont.

• class Undergraduate
Programming Example:
Multilevel Derived Classes,
cont.
Programming Example:
Multilevel Derived Classes,
cont.
• A chain of derived classes permits code to be
reused which improves efficiency.
Terminology
• A base class often is called a parent class.
• A derived class then is called a child class.
• A class that is a parent of a parent of…a
parent of (with one or more “parent of”s)
another class often is called an ancestor
class.
• A class than is a child of a child of…a child of
(with one or more “child of”s) often is called a
descendant.
(optional) A Subtle Point
About Overloading and
Overriding
• Even when two methods have the same
number of parameters, a difference in
parameter type is sufficient to qualify for
overloading.
• But, a reference to an ancestor class type can
refer to a descendant type.
• Hence an overridden method in an ancestor
class sometimes needs to be invoked
explicitly using super.
(optional) A Subtle Point
About Overloading and
Overriding, cont.
• method equals
An Object Can Have More
than One Type
• If class Undergraduate is derived from class
Student and class Student is derived from class
Person, then every object of class Undergraduate
is also an object of class Student and an
object of class Person.
• A reference to an object of class Undergraduate
can be substituted for a reference to an
object of class Student or a reference to an
object of class Person.
An Object Can Have More
than One Type, cont.
• Given
public static void compareNumbers (Student s1,
Student s2)

then either
SomeClass.compareNumbers
(studentObject, undergradObject);

or
SomeClass.compareNumbers
(undergradObject, studentObject);

could be used.
An Object Can Have More
than One Type, cont.
• However, a reference to an object of class
person cannot be substituted for a reference to
an object of class Student or an object of class
Undergraduate.
• A reference to an object of an ancestor
cannot be substituted for a reference to an
object of a derived class.
An Object Can Have More
than One Type, cont.
• Hence, given
public static void compareNumbers (Student s1,
Student s2)

neither
SomeClass.compareNumbers
(studentObject, personObject);

nor
SomeClass.compareNumbers
(personObject, studentObject);

could be used.
“Is a” and “Has a”
Relationships
• A derived class is a more specialized class
than its base class or any of its ancestor
classes.
– For example, a student is a person.
• A more complex object has as one or more of
its instance variables one or more references
to objects of a simple class, exhibiting a has a
relationship.
– For example, a person has a name.
The Class Object
• In Java, every class descends from (and
inherits features from) the Object class.
• Therefore, every object of every class is of
type Object.
• Unless a class is declared explicitly to be a
descendant of some other class, it is an
immediate descendant of the class Object.
The Class Object, cont.
• An object of any class can substituted when a
parameter of type Object is expected.
• Every class inherits some methods from the
class Object:
– equals()
– toString()

but usually these methods are overridden by
the derived class or by an intermediate
ancestor class.
Method toString
• Inherited method toString takes no
arguments.
• Typically, method toString is coded to
produce and return a string which contains
everything of interest about the object.
Method toString, cont.
• example
public String toString();
{
return (“Name: “ + getName()+ n
+ “Number: “ + getNumber());
}

• Whenever a new class is created, a suitable
toString method should be defined.
Method toString, cont.
• Method toString can be called my the
conventional means, Object_Name.toString, or
by using only Object_Name.
• example
System.out.println(s.toString());

or
System.out.println(s);
Method clone
• Method clone also is inherited from the class
Object.
• Method clone takes no arguments and returns
a copy of the calling object.
– Even though the data is identical, the
objects are distinct.
• Typically, method clone needs to be
overridden to function properly.
– See Appendix 8 for more details.
Case Study: Character
Graphics
• Sometimes terminals, especially older ones,
allow only text output.
• We’ll design three simple classes for simple
graphics using only text output.
– One class will produce a box.
– One class will produce a triangle.
– One class will draw a pine tree using the
other two classes.
Case Study: Character
Graphics, cont.
• Box and triangle figures will have an offset
from the edge of the screen.
• A box figure will have a size, expressed as a
number of characters.
• A triangle figure will have a size, given by its
base, with the sides determined
automatically.
Case Study: Character
Graphics, cont.
Case Study: Character
Graphics, cont.
• A base class named Figure will provide the
offset property common to a box and a
triangle and will be used to derive class Box
and class Triangle.
• The base class Figure will set the parameters
for all figures and will draw the figures.
Case Study: Character
Graphics, cont.
• class Figure
Case Study: Character
Graphics, cont.
• To draw a box, top to bottom
– draw the top line
– draw the side lines
– draw the bottom line
Case Study: Character
Graphics, cont.
• class Box
Case Study: Character
Graphics, cont.
• class Box, contd.

• Each new method should be tested upon
completion.
Case Study: Character
Graphics, cont.
• To draw a triangle, top to bottom
– draw an inverted “V”
– draw a horizontal line for the base
Case Study: Character
Graphics, cont.
• class Triangle
Case Study: Character
Graphics, cont.
• class Triangle, contd.
Case Study: Character
Graphics, cont.
• To complete the project, produce a driver.
Case Study: Character
Graphics, cont.
class GraphicsDemo
Case Study: Character
Graphics, cont.
Abstract Classes
• An abstract class is not intended to be used
to create objects.
• Class Figure is an example of a class used as
a base class to derive other classes including
class Box and class Triangle.
– Nevertheless, as written, objects of class
Figure could be instantiated and its
methods used, even though that was not
our intention.
Abstract Classes, cont.
• By declaring one or more methods to be
abstract and by omitting the method body,
only objects of derived classes which override
the method(s) can be instantiated.
• example
public abstract void drawHere();

• A class that has at least one abstract method
must be declared abstract.
Abstract Classes, cont.
• example
public abstract class Figure
{
…
Abstract Classes, cont.
• class Figure
Abstract Classes, cont.
• An abstract class serves as a placeholder.
• An abstract class makes it simpler to define
derived classes.
• An abstract class assures that all its derived
classes implement its abstract method(s), or
they too will be abstract.
Interfaces
• An interface specifies the headings for
methods that must be defined for any class
that implements the interface.
Interfaces, cont.
• Interface Writeable
Interfaces, cont.
• To implement an interface, a class must
– include the phrase
implements Interface_Name

at the start of the class definition
• example
implements MyInterface, YourInterface

– implement all the method headings listed in
the definition of the interface.
Interfaces, cont.
• class WriteableUndergraduate
Interfaces, cont.
• An interface is a type.
• A method may have a parameter of an
interface type.
• Any class that implements the interface can
be substitute for the parameter.
• A class can implement any number of
interfaces by providing implementations for all
the methods of all the interfaces it claims to
implement.
Dynamic Binding and
Polymorphism: Outline
•
•
•
•

Dynamic Binding
Type Checking and Dynamic Binding
Dynamic Binding with toString
Polymorphism
Dynamic Binding
• Different objects can invoke different method
definitions using the same method name.
• For example, if b references a Box and t
references a Triangle, b and t invoke different
definitions of method drawAt even of b and t
are declared to be objects of type Figure.
Dynamic Binding, cont.
• Handling the invocation of a method that may
be overridden later is called dynamic binding
or late binding.
• The type of object being referenced at the
time of the method call, not the type of
reference that was declared, determines
which method is invoked.
Dynamic Binding, cont.
• Consider
Figure f;
Box b = new Box(1, 4, 4);
f = b;
f.drawAt(2);
Triangle t = new Triangle(1,2);
f = t;
f.drawAt(2);
Dynamic Binding, cont.
• Method drawAt is inherited from class Figure
and is not overridden.
• But, method drawHere is invoked within the
definition of method drawAt, and method
drawHere is overridden.
• The type of object referred to by f determines
which method drawHere is invoked.
Type Checking and Dynamic
Binding
• Recall that an object reference to an ancestor
class can refer to an object of a descendant
class.
Employee e = new Employee();
Person p;
p = e;

• However, you can invoke only a method in
class Person with the variable p.
Type Checking and Dynamic
Binding, cont.
• However, if a method is overridden in the
class Employee, and variable p references an
Employee object, then the method in class
Employee is used.
• The variable determines what methods can
be used, but the type referenced by the object
determines which definition of the method will
be used.
Type Checking and Dynamic
Binding, cont.
• To use a method name in the class Employee
with an object named by the variable p of type
Person, use a type cast.
• example
Employee e = (Employee)p;
e.setEmployeeNumber(5678);
Type Checking and Dynamic
Binding, cont.
• However, even a type cast cannot fool Java
– example
Box b = new Box (1, 4, 4);
Figure f = (Figure)b;
f. drawHere()

will use the definition of drawHere given in
class Box, not the definition of drawHere
given in class Figure.
Type Checking and Dynamic
Binding, cont.
• You are unlikely to assign an object of a
descendant type to a variable of a parent
type, at least not directly.
• But, such an assignment can occur indirectly
by providing an argument of a descendant
type for a method that has a parameter of an
ancestor type.
Dynamic Binding with
toString
• Recall method toString typically is used to
prepare and return a string, describing an
object, for output to the screen.
• The name of this method can be omitted,
thanks to dynamic binding, because one
definition of method println expects a single
argument of type Object which it uses to
invoke the method toString associated with
the object.
Polymorphism
• Polymorphism comes from Greek meaning
“many forms.”
• In Java, polymorphism refers to the dynamic
binding mechanism that determines which
method definition will be used when a method
name has been overridden.
• Thus, polymorphism refers to dynamic
binding.
Subtle Difference
• Dynamic binding refers to the process carried
out by the computer.
• Polymorphism can be thought of as
something objects do.
• Polymorphism, encapsulation, and
inheritance, and considered to be the main
features of object-oriented programming.
(optional) A Better equals
Method
• Sometimes method equals from class Object is
overloaded when it should have been
overridden.
– This occurs when its parameter is not of
type Object.
• Usually, this is all right.
(optional) A Better equals
Method, cont.
• But, if method equals is called with an object
of class Object as its argument, method equals
from class Object will be invoked.
• The problem is fixed by changing the formal
parameter in the overriding method so that it
is a parameter of type Object.
(optional) A Better equals
Method, cont.
• However, this allows the argument to be any
type of object, which can produce a run-time
error.
• But, we can determine if an object is of the
correct type using
Object instanceof Class_Name

• Finally, we should return false when
comparing an object to a null reference.
(optional) A Better equals
Method, cont.
• method equals
(optional) Graphics
Supplement: Outline
•
•
•
•

The Class JApplet
The Class JFrame
Window Events and Window Listeners
The ActionListener Interface
The Class JApplet
• An applet is a derived class from the class
JApplet
public class LabelDemo extends JApplet

• Class JApplet has methods named init and
paint.
• When you define methods init or paint in an
applet, you are overriding inherited methods.
The Class JApplet, cont.
• Methods init and/or paint can be invoked
without having to (re)define them.
• Thanks to polymorphism, methods init
and/or paint defined in an applet will be
invoked by library class methods and other
methods when you run the applet with the
applet (of type JApplet) as the parameter to
the method.
The Class JApplet, cont.
• The class JApplet is used as a base class to
derive applets to run from a webpage.
The Class JFrame
• A Graphical User Interface or GUI is simply a
windowing interface for some kind of
program.
• The class JFrame, rather than the class JApplet,
is used to produce GUIs that can run as
regular Java applications.
The Class Jframe, cont.
• class ButtonDemo
The Class Jframe, cont
class ShowButtonDemo
The Class JFrame, cont.
The Class JFrame, cont.
• The class JFrame, and every class derived
from it, has a method named setVisible.
– When its argument has the value true, the
GUI is visible.
• Labels, buttons, JFrames, and other
components inherit method setVisible from a
common ancestor.
The Class JFrame, cont.
• A class derived from JFrame has no init
method, but it does use a constructor.
• Code that would be in the init method of an
applet is placed in the constructor of the class
derived from JFrame.
• A GUI derived from a JFrame sets an initial
size
setSize(WIDTH, HEIGHT);
Window Events and Window
Listeners
• With a JFrame, a GUI’s close-window button
needs to be programmed.
• A close-window button generates a window
event which is handled by a window listener.
• Class WindowAdapter is a window listener, so
every class derived from class WindowAdapter is
a window listener.
Window Events and Window
Listeners, cont.
• A window listener is registered with a
GUI using method
addWindowListener.

JFrame
Window Events and Window
Listeners, cont.
• class WindowDestroyer
Window Events and Window
Listeners, cont.
• A WindowDestroyer object is created and
registered as a window listener for our JFrame
GUI using
WindowDestroyer listener =
new WindowDestroyer();
addWindowListener(listener);

• When the window-close button is clicked, the
JFrame GUI ends.
The ActionListener
Interface
• The ActionListener interface has only one
method heading that must be implemented.
public void actionPerformed
(ActionEvent e)

• A listener that response to button clicks in an
applet or in a JFrame must implement the
ActionListener interface.
Programming Example:
Smiley Face as a JFrame
• Class JFrame and every class derived from
class JFrame has a paint method.
• The paint method can be redefined to draw
figure.
Programming Example:
Smiley Face as a Jframe,
cont.
• class HappyFace
Programming Example:
Smiley Face as a Jframe,
cont.
• class ShowHappyFace
Programming Example:
Smiley Face as a Jframe,
cont.
Summary
• You have become acquainted with
inheritance.
• You have learned how to define and use
derived classes.
• You have learned about dynamic binding and
polymorphism.
• (optional) You have learned about the class
JFrame used to produce windowing interfaces.

Más contenido relacionado

Similar a Learn inheritance, derived classes, polymorphism in Java

04_-_Inheritance_Polymorphism_and_Interfaces.pdf
04_-_Inheritance_Polymorphism_and_Interfaces.pdf04_-_Inheritance_Polymorphism_and_Interfaces.pdf
04_-_Inheritance_Polymorphism_and_Interfaces.pdfmarkbrianBautista
 
Polymorphism
PolymorphismPolymorphism
PolymorphismNuha Noor
 
Inheritance & Polymorphism - 1
Inheritance & Polymorphism - 1Inheritance & Polymorphism - 1
Inheritance & Polymorphism - 1PRN USM
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardHari kiran G
 
OO relationships between classes
OO relationships between classesOO relationships between classes
OO relationships between classesSujit Kumar
 
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.pptAshwathGupta
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingNithyaN19
 
full defination of final opp.pptx
full defination of final opp.pptxfull defination of final opp.pptx
full defination of final opp.pptxrayanbabur
 
Pi j3.1 inheritance
Pi j3.1 inheritancePi j3.1 inheritance
Pi j3.1 inheritancemcollison
 
Intro To C++ - Class #22: Inheritance, Part 1
Intro To C++ - Class #22: Inheritance, Part 1Intro To C++ - Class #22: Inheritance, Part 1
Intro To C++ - Class #22: Inheritance, Part 1Blue Elephant Consulting
 
chap 6 : Objects and classes (scjp/ocjp)
chap 6 : Objects and classes (scjp/ocjp)chap 6 : Objects and classes (scjp/ocjp)
chap 6 : Objects and classes (scjp/ocjp)It Academy
 

Similar a Learn inheritance, derived classes, polymorphism in Java (20)

04_-_Inheritance_Polymorphism_and_Interfaces.pdf
04_-_Inheritance_Polymorphism_and_Interfaces.pdf04_-_Inheritance_Polymorphism_and_Interfaces.pdf
04_-_Inheritance_Polymorphism_and_Interfaces.pdf
 
Ch5 inheritance
Ch5 inheritanceCh5 inheritance
Ch5 inheritance
 
Java programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- InheritanceJava programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- Inheritance
 
PPT Lecture-1.4.pptx
PPT Lecture-1.4.pptxPPT Lecture-1.4.pptx
PPT Lecture-1.4.pptx
 
Java chapter 5
Java chapter 5Java chapter 5
Java chapter 5
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Inheritance & Polymorphism - 1
Inheritance & Polymorphism - 1Inheritance & Polymorphism - 1
Inheritance & Polymorphism - 1
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference Card
 
OO relationships between classes
OO relationships between classesOO relationships between classes
OO relationships between classes
 
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overriding
 
full defination of final opp.pptx
full defination of final opp.pptxfull defination of final opp.pptx
full defination of final opp.pptx
 
Pi j3.1 inheritance
Pi j3.1 inheritancePi j3.1 inheritance
Pi j3.1 inheritance
 
28csharp
28csharp28csharp
28csharp
 
28c
28c28c
28c
 
Intro To C++ - Class #22: Inheritance, Part 1
Intro To C++ - Class #22: Inheritance, Part 1Intro To C++ - Class #22: Inheritance, Part 1
Intro To C++ - Class #22: Inheritance, Part 1
 
OOPS Characteristics
OOPS CharacteristicsOOPS Characteristics
OOPS Characteristics
 
chap 6 : Objects and classes (scjp/ocjp)
chap 6 : Objects and classes (scjp/ocjp)chap 6 : Objects and classes (scjp/ocjp)
chap 6 : Objects and classes (scjp/ocjp)
 
Java OOPs
Java OOPs Java OOPs
Java OOPs
 
Lecture09.ppt
Lecture09.pptLecture09.ppt
Lecture09.ppt
 

Último

USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 

Último (20)

YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 

Learn inheritance, derived classes, polymorphism in Java

  • 2. Objectives • become acquainted with inheritance • learn how to define and use derived classes • learn about dynamic binding and polymorphism • (optional) learn about the class JFrame used to produce windowing interfaces
  • 3. Outline • • • • Inheritance Basics Programming with Inheritance Dynamic Binding and Polymorphism (optional) Graphics Supplement
  • 4. Inheritance Basics: Outline • • • • • • Introduction to Inheritance Derived Classes Overriding Method Definitions Overriding vs. Overloading The final Modifier UML Inheritance Diagrams
  • 5. Introduction to Inheritance • Inheritance allows us to define a general class and then more specialized classes simply by adding new details to the more general class definition. • A more specialized class inherits the properties of the more general class, so that only new features need to be programmed.
  • 6. Introduction to Inheritance, cont. • example – General class Vehicle might have instance variables for weight and maximum occupancy. – More specialized class Automobile might add instance variables for wheels, engine size, and license plate number. – General class Vehicle might also be used define more specialized classes Boat and Airplane.
  • 7. Programming Example: A Base Class • class Person
  • 8. Derived Classes • Consider a college record-keeping system with records about students, faculty and (nonteaching) staff.
  • 10. Derived Classes, cont. • Even though your program may not need any Person or Employee objects, these classes can be useful for consolidating and representing features common to all subclasses. – For example, all students, faculty, and staff have names, and these names may need to be initialized, changed, retrieved, or printed.
  • 11. Derived Classes, cont. is a derived class of class Person Person is called the base class. • class Student and class
  • 12. Derived Classes, cont. • public class Student extends Person
  • 13. Derived Classes, cont. • syntax public class Derived_Class_Name extends Base_Class_Name { Declarations_of_Added_Instance _Variables Definitions_of_Added_and_Overridden_Method s }
  • 14. Derived Classes, cont. • When you define a derived class, you declare only the added instance variables and you define only the added and overridden methods. • The variables and methods of the parent class which are not declared private are inherited automatically.
  • 15. Derived Classes, cont. • class InheritanceDemo
  • 17. Overriding Method Definitions • Notice that class Student has a method writeOutput with no parameters, and class Person also has a method writeOutput with no parameters, that class Student inherits. • When a derived class defines a method with the same name and the same number and types of parameters as a method in the base class, the method in the derived class overrides the method in the base class.
  • 18. Overriding Method Definitions, cont. • When overriding a method, you can change the method definition to anything you wish, but you cannot change the method’s heading or the method’s return type.
  • 19. Overriding vs. Overloading • When you override a method, the new method definition in the derived class has the same name and the same number of types of parameters as the method definition in the base class. • When the name is the same, but the number or types of the parameters differs, whether in the base class or in the derived class, the method is overloaded in the derived class.
  • 20. Overriding vs. Overloading, cont. • example: public String getName(String title) in class Student and public String getName() in class Person overload method getName since the two methods have different parameter lists. – Both methods are available in class Student.
  • 21. The final Modifier • You can prevent a method definition from being overridden by adding the word final to the method heading. • example public final void someMethod() { … • This is used rarely, but it produces more efficient code.
  • 22. The final Modifier, cont. • An entire class can be declared final, in which case it cannot be used as a base class to derive another class.
  • 23. Private Instance Variables in the Base Class • Private instance variables inherited from a base class cannot be accessed directly. • Instead, they must be accessed using a method that is not declared private. • While this may seem inconvenient, it provides an important mechanism for controlling access and changes to instance variables in the base class.
  • 24. Private Methods in the Base Class • Like private instance variables, private method inherited from a base class cannot be accessed directly. • Instead, they, too, must be accessed using a method that is not declared private. • This, too, provides an important mechanism for controlling access to methods in the base class.
  • 25. Private Methods in the Base Class • Since private methods typically serve as helping methods, their use always is limited to the class in which they are defined.
  • 26. UML Inheritance Diagrams • Typically, a UML class diagram shows only as much as is needed for the design task at hand.
  • 28. UML Inheritance Diagrams, cont. • An arrowhead points from a derived class to its base class, indicating an is-a relationship. – For example, a Student is-a Person. • Inherited instance variables and methods can be found by following the arrowheads.
  • 29. UML Inheritance Diagrams, cont. • more details of the inheritance hierarchy
  • 30. Programming with Inheritance: Outline • • • • Constructors in Derived Classes (optional) The this Method Calling an Overridden Method (optional) A Subtle Point About Overloding and Overriding • The class Object • Abstract Classes • Interfaces
  • 31. Constructors in Derived Classes • A base class has its own constructors. – Their purpose typically is to initialize the instance variables declared in the base class. • A derived class has its own constructors. – Their purpose typically is to call a constructor in the base class, and then to initialize the instance variables declared in the derived class.
  • 32. Constructors in Derived Classes, cont. • To call a constructor in the base class, use super(Values_for_Instance_Variables _Declared_in_the_Base_Class); • example super(initialName); not Person(initialName); //ILLEGAL
  • 33. Using super • The call to the constructor in the base class (using super) must be the first action taken in the constructor of a derived class. • When no call to the constructor in the base class is included, Java automatically includes a call to the default constructor in the base class.
  • 34. Using super, cont. • equivalent definitions: public Student() { super(); studentNumber= 0; } and public Student() { studentNumber= 0; }
  • 35. (optional) The this Method • Within the definition of one constructor, it can be appropriate to call another constructor in the same class. • The keyword this is used to call another constructor in the same class. • example this(initialName, 0)
  • 36. (optional) The this Method, cont. • Any use of this must be the first action in the constructor definition. – Thus, a constructor definition cannot contain a call using super and a call using this. • To use both super and this, include a call using this in one constructor and a call using super in the constructor called using this.
  • 37. Calling an Overridden Method can be used to call a method in the base class that has been overridden in the derived class. • example • super super.writeOutput(); • However, you cannot repeat the use of super to invoke a method in some ancestor class other than the immediate base (parent) class.
  • 38. Programming Example: Multilevel Derived Classes • Class Undergraduate can be derived from class Student which is derived from class Person. • Class Undergraduate will have all the instance variables and methods of class Student which has all the instance variables and methods of class Person.
  • 39. Programming Example: Multilevel Derived Classes, cont. • class Undergraduate
  • 41. Programming Example: Multilevel Derived Classes, cont. • A chain of derived classes permits code to be reused which improves efficiency.
  • 42. Terminology • A base class often is called a parent class. • A derived class then is called a child class. • A class that is a parent of a parent of…a parent of (with one or more “parent of”s) another class often is called an ancestor class. • A class than is a child of a child of…a child of (with one or more “child of”s) often is called a descendant.
  • 43. (optional) A Subtle Point About Overloading and Overriding • Even when two methods have the same number of parameters, a difference in parameter type is sufficient to qualify for overloading. • But, a reference to an ancestor class type can refer to a descendant type. • Hence an overridden method in an ancestor class sometimes needs to be invoked explicitly using super.
  • 44. (optional) A Subtle Point About Overloading and Overriding, cont. • method equals
  • 45. An Object Can Have More than One Type • If class Undergraduate is derived from class Student and class Student is derived from class Person, then every object of class Undergraduate is also an object of class Student and an object of class Person. • A reference to an object of class Undergraduate can be substituted for a reference to an object of class Student or a reference to an object of class Person.
  • 46. An Object Can Have More than One Type, cont. • Given public static void compareNumbers (Student s1, Student s2) then either SomeClass.compareNumbers (studentObject, undergradObject); or SomeClass.compareNumbers (undergradObject, studentObject); could be used.
  • 47. An Object Can Have More than One Type, cont. • However, a reference to an object of class person cannot be substituted for a reference to an object of class Student or an object of class Undergraduate. • A reference to an object of an ancestor cannot be substituted for a reference to an object of a derived class.
  • 48. An Object Can Have More than One Type, cont. • Hence, given public static void compareNumbers (Student s1, Student s2) neither SomeClass.compareNumbers (studentObject, personObject); nor SomeClass.compareNumbers (personObject, studentObject); could be used.
  • 49. “Is a” and “Has a” Relationships • A derived class is a more specialized class than its base class or any of its ancestor classes. – For example, a student is a person. • A more complex object has as one or more of its instance variables one or more references to objects of a simple class, exhibiting a has a relationship. – For example, a person has a name.
  • 50. The Class Object • In Java, every class descends from (and inherits features from) the Object class. • Therefore, every object of every class is of type Object. • Unless a class is declared explicitly to be a descendant of some other class, it is an immediate descendant of the class Object.
  • 51. The Class Object, cont. • An object of any class can substituted when a parameter of type Object is expected. • Every class inherits some methods from the class Object: – equals() – toString() but usually these methods are overridden by the derived class or by an intermediate ancestor class.
  • 52. Method toString • Inherited method toString takes no arguments. • Typically, method toString is coded to produce and return a string which contains everything of interest about the object.
  • 53. Method toString, cont. • example public String toString(); { return (“Name: “ + getName()+ n + “Number: “ + getNumber()); } • Whenever a new class is created, a suitable toString method should be defined.
  • 54. Method toString, cont. • Method toString can be called my the conventional means, Object_Name.toString, or by using only Object_Name. • example System.out.println(s.toString()); or System.out.println(s);
  • 55. Method clone • Method clone also is inherited from the class Object. • Method clone takes no arguments and returns a copy of the calling object. – Even though the data is identical, the objects are distinct. • Typically, method clone needs to be overridden to function properly. – See Appendix 8 for more details.
  • 56. Case Study: Character Graphics • Sometimes terminals, especially older ones, allow only text output. • We’ll design three simple classes for simple graphics using only text output. – One class will produce a box. – One class will produce a triangle. – One class will draw a pine tree using the other two classes.
  • 57. Case Study: Character Graphics, cont. • Box and triangle figures will have an offset from the edge of the screen. • A box figure will have a size, expressed as a number of characters. • A triangle figure will have a size, given by its base, with the sides determined automatically.
  • 59. Case Study: Character Graphics, cont. • A base class named Figure will provide the offset property common to a box and a triangle and will be used to derive class Box and class Triangle. • The base class Figure will set the parameters for all figures and will draw the figures.
  • 60. Case Study: Character Graphics, cont. • class Figure
  • 61. Case Study: Character Graphics, cont. • To draw a box, top to bottom – draw the top line – draw the side lines – draw the bottom line
  • 62. Case Study: Character Graphics, cont. • class Box
  • 63. Case Study: Character Graphics, cont. • class Box, contd. • Each new method should be tested upon completion.
  • 64. Case Study: Character Graphics, cont. • To draw a triangle, top to bottom – draw an inverted “V” – draw a horizontal line for the base
  • 65. Case Study: Character Graphics, cont. • class Triangle
  • 66. Case Study: Character Graphics, cont. • class Triangle, contd.
  • 67. Case Study: Character Graphics, cont. • To complete the project, produce a driver.
  • 68. Case Study: Character Graphics, cont. class GraphicsDemo
  • 70. Abstract Classes • An abstract class is not intended to be used to create objects. • Class Figure is an example of a class used as a base class to derive other classes including class Box and class Triangle. – Nevertheless, as written, objects of class Figure could be instantiated and its methods used, even though that was not our intention.
  • 71. Abstract Classes, cont. • By declaring one or more methods to be abstract and by omitting the method body, only objects of derived classes which override the method(s) can be instantiated. • example public abstract void drawHere(); • A class that has at least one abstract method must be declared abstract.
  • 72. Abstract Classes, cont. • example public abstract class Figure { …
  • 74. Abstract Classes, cont. • An abstract class serves as a placeholder. • An abstract class makes it simpler to define derived classes. • An abstract class assures that all its derived classes implement its abstract method(s), or they too will be abstract.
  • 75. Interfaces • An interface specifies the headings for methods that must be defined for any class that implements the interface.
  • 77. Interfaces, cont. • To implement an interface, a class must – include the phrase implements Interface_Name at the start of the class definition • example implements MyInterface, YourInterface – implement all the method headings listed in the definition of the interface.
  • 78. Interfaces, cont. • class WriteableUndergraduate
  • 79. Interfaces, cont. • An interface is a type. • A method may have a parameter of an interface type. • Any class that implements the interface can be substitute for the parameter. • A class can implement any number of interfaces by providing implementations for all the methods of all the interfaces it claims to implement.
  • 80. Dynamic Binding and Polymorphism: Outline • • • • Dynamic Binding Type Checking and Dynamic Binding Dynamic Binding with toString Polymorphism
  • 81. Dynamic Binding • Different objects can invoke different method definitions using the same method name. • For example, if b references a Box and t references a Triangle, b and t invoke different definitions of method drawAt even of b and t are declared to be objects of type Figure.
  • 82. Dynamic Binding, cont. • Handling the invocation of a method that may be overridden later is called dynamic binding or late binding. • The type of object being referenced at the time of the method call, not the type of reference that was declared, determines which method is invoked.
  • 83. Dynamic Binding, cont. • Consider Figure f; Box b = new Box(1, 4, 4); f = b; f.drawAt(2); Triangle t = new Triangle(1,2); f = t; f.drawAt(2);
  • 84. Dynamic Binding, cont. • Method drawAt is inherited from class Figure and is not overridden. • But, method drawHere is invoked within the definition of method drawAt, and method drawHere is overridden. • The type of object referred to by f determines which method drawHere is invoked.
  • 85. Type Checking and Dynamic Binding • Recall that an object reference to an ancestor class can refer to an object of a descendant class. Employee e = new Employee(); Person p; p = e; • However, you can invoke only a method in class Person with the variable p.
  • 86. Type Checking and Dynamic Binding, cont. • However, if a method is overridden in the class Employee, and variable p references an Employee object, then the method in class Employee is used. • The variable determines what methods can be used, but the type referenced by the object determines which definition of the method will be used.
  • 87. Type Checking and Dynamic Binding, cont. • To use a method name in the class Employee with an object named by the variable p of type Person, use a type cast. • example Employee e = (Employee)p; e.setEmployeeNumber(5678);
  • 88. Type Checking and Dynamic Binding, cont. • However, even a type cast cannot fool Java – example Box b = new Box (1, 4, 4); Figure f = (Figure)b; f. drawHere() will use the definition of drawHere given in class Box, not the definition of drawHere given in class Figure.
  • 89. Type Checking and Dynamic Binding, cont. • You are unlikely to assign an object of a descendant type to a variable of a parent type, at least not directly. • But, such an assignment can occur indirectly by providing an argument of a descendant type for a method that has a parameter of an ancestor type.
  • 90. Dynamic Binding with toString • Recall method toString typically is used to prepare and return a string, describing an object, for output to the screen. • The name of this method can be omitted, thanks to dynamic binding, because one definition of method println expects a single argument of type Object which it uses to invoke the method toString associated with the object.
  • 91. Polymorphism • Polymorphism comes from Greek meaning “many forms.” • In Java, polymorphism refers to the dynamic binding mechanism that determines which method definition will be used when a method name has been overridden. • Thus, polymorphism refers to dynamic binding.
  • 92. Subtle Difference • Dynamic binding refers to the process carried out by the computer. • Polymorphism can be thought of as something objects do. • Polymorphism, encapsulation, and inheritance, and considered to be the main features of object-oriented programming.
  • 93. (optional) A Better equals Method • Sometimes method equals from class Object is overloaded when it should have been overridden. – This occurs when its parameter is not of type Object. • Usually, this is all right.
  • 94. (optional) A Better equals Method, cont. • But, if method equals is called with an object of class Object as its argument, method equals from class Object will be invoked. • The problem is fixed by changing the formal parameter in the overriding method so that it is a parameter of type Object.
  • 95. (optional) A Better equals Method, cont. • However, this allows the argument to be any type of object, which can produce a run-time error. • But, we can determine if an object is of the correct type using Object instanceof Class_Name • Finally, we should return false when comparing an object to a null reference.
  • 96. (optional) A Better equals Method, cont. • method equals
  • 97. (optional) Graphics Supplement: Outline • • • • The Class JApplet The Class JFrame Window Events and Window Listeners The ActionListener Interface
  • 98. The Class JApplet • An applet is a derived class from the class JApplet public class LabelDemo extends JApplet • Class JApplet has methods named init and paint. • When you define methods init or paint in an applet, you are overriding inherited methods.
  • 99. The Class JApplet, cont. • Methods init and/or paint can be invoked without having to (re)define them. • Thanks to polymorphism, methods init and/or paint defined in an applet will be invoked by library class methods and other methods when you run the applet with the applet (of type JApplet) as the parameter to the method.
  • 100. The Class JApplet, cont. • The class JApplet is used as a base class to derive applets to run from a webpage.
  • 101. The Class JFrame • A Graphical User Interface or GUI is simply a windowing interface for some kind of program. • The class JFrame, rather than the class JApplet, is used to produce GUIs that can run as regular Java applications.
  • 102. The Class Jframe, cont. • class ButtonDemo
  • 103. The Class Jframe, cont class ShowButtonDemo
  • 105. The Class JFrame, cont. • The class JFrame, and every class derived from it, has a method named setVisible. – When its argument has the value true, the GUI is visible. • Labels, buttons, JFrames, and other components inherit method setVisible from a common ancestor.
  • 106. The Class JFrame, cont. • A class derived from JFrame has no init method, but it does use a constructor. • Code that would be in the init method of an applet is placed in the constructor of the class derived from JFrame. • A GUI derived from a JFrame sets an initial size setSize(WIDTH, HEIGHT);
  • 107. Window Events and Window Listeners • With a JFrame, a GUI’s close-window button needs to be programmed. • A close-window button generates a window event which is handled by a window listener. • Class WindowAdapter is a window listener, so every class derived from class WindowAdapter is a window listener.
  • 108. Window Events and Window Listeners, cont. • A window listener is registered with a GUI using method addWindowListener. JFrame
  • 109. Window Events and Window Listeners, cont. • class WindowDestroyer
  • 110. Window Events and Window Listeners, cont. • A WindowDestroyer object is created and registered as a window listener for our JFrame GUI using WindowDestroyer listener = new WindowDestroyer(); addWindowListener(listener); • When the window-close button is clicked, the JFrame GUI ends.
  • 111. The ActionListener Interface • The ActionListener interface has only one method heading that must be implemented. public void actionPerformed (ActionEvent e) • A listener that response to button clicks in an applet or in a JFrame must implement the ActionListener interface.
  • 112. Programming Example: Smiley Face as a JFrame • Class JFrame and every class derived from class JFrame has a paint method. • The paint method can be redefined to draw figure.
  • 113. Programming Example: Smiley Face as a Jframe, cont. • class HappyFace
  • 114. Programming Example: Smiley Face as a Jframe, cont. • class ShowHappyFace
  • 115. Programming Example: Smiley Face as a Jframe, cont.
  • 116. Summary • You have become acquainted with inheritance. • You have learned how to define and use derived classes. • You have learned about dynamic binding and polymorphism. • (optional) You have learned about the class JFrame used to produce windowing interfaces.