Chapter 7 Generalization/Specialization and Inheritance
description
Transcript of Chapter 7 Generalization/Specialization and Inheritance
Chapter 7 - Generalization/Specialization and Inheritance 1
Chapter 7
Generalization/Specialization and Inheritance
Chapter 7 - Generalization/Specialization and Inheritance 2
Chapter 7 Topics• Creating generalization/specialization hierarchies
using the extends keyword to implement inheritance with problem domain classes
• Invoking superclass constructors when writing a subclass constructor
• Using the abstract and final keywords with Java superclasses
• Overriding superclass methods in subclasses• How polymorphism works with Java subclasses• The implications of protected and private access
in superclasses
Chapter 7 - Generalization/Specialization and Inheritance 3
Implementing the Boat Generalization/Specialization
Hierarchy• Boat Class (See Figure 7-2)
– Includes:• 4 attributes• Constructor invokes 4 accessor (setter) methods• 8 standard accessor methods
– 4 setters– 4 getters
Chapter 7 - Generalization/Specialization and Inheritance 4
Chapter 7 - Generalization/Specialization and Inheritance 5
Implementing the Boat Generalization/Specialization
Hierarchy• Testing the Boat Superclass
– TesterOne tester program (Figure 7-3)• Creates three boat instances• Retrieves information about each instance
– Sequence diagram (Figure 7-5)• Shows how TesterOne interacts with the Boat class
– Boat is ready to use as a superclass
Chapter 7 - Generalization/Specialization and Inheritance 6
Chapter 7 - Generalization/Specialization and Inheritance 7
Implementing the Boat Generalization/Specialization
Hierarchy• Using the Extends Keyword to Create the
Sailboat Subclass– Generalization/specialization hierarchy
• General superclass includes attributes and methods that are shared by specialized subclasses
– Instances of subclass inherit the attributes and methods of the superclass
– Include additional attributes and methods defined by subclass
Chapter 7 - Generalization/Specialization and Inheritance 8
Implementing the Boat Generalization/Specialization
Hierarchy• Using the Extends Keyword to Create
the Sailboat Subclass– Keywords:
• Use extends keyword to implement inheritance– public class Sailboat extends Boat
• Use super keyword to invoke superclass constructor
– super(aStateRegNo, aLength, aManufacturer, aYear);
Chapter 7 - Generalization/Specialization and Inheritance 9
Chapter 7 - Generalization/Specialization and Inheritance 10
Implementing the Boat Generalization/Specialization
Hierarchy• Using the Extends Keyword to Create
the Sailboat Subclass– To use inheritance:
• Need to know constructor and method signatures (APIs)
• Do not need:– Access to source code– Knowledge of how class is written
Chapter 7 - Generalization/Specialization and Inheritance 11
Implementing the Boat Generalization/Specialization
Hierarchy• Testing the Sailboat Subclass
– TesterTwoA tester program (Figure 7-8)• Creates 3 Sailboat instances and populates
them• Can use any methods defined in super or sub
class– Sequence diagram (Figure 7-10)
• Shows how TesterTwoA interacts with the Sailboat class
Chapter 7 - Generalization/Specialization and Inheritance 12
Chapter 7 - Generalization/Specialization and Inheritance 13
Implementing the Boat Generalization/Specialization
Hierarchy• Adding a Second Subclass – Powerboat
– Powerboat Class (Figure 7-11)• Second class can be extended from Boat without
effecting any other classes derived from Boat– TesterTwoB tester program (Figure 7-12)
• Creates instances of both subclass and populates them– Sequence diagram (Figure 7-14)
• Shows how TesterTwoB interacts with the Sailboat and Powerboat classes
Chapter 7 - Generalization/Specialization and Inheritance 14
Chapter 7 - Generalization/Specialization and Inheritance 15
Understanding Abstract and Final Classes
• Using Abstract Classes– Concrete class
• Class that can be instantiated– Abstract class
• Class not intended to be instantiated• Used only to extend into subclasses• Facilitates reuse• Keyword:
– abstract» Used in class header to declare an abstract class» e.g., public abstract class Boat
Chapter 7 - Generalization/Specialization and Inheritance 16
Understanding Abstract and Final Classes
• Using Final Classes– Final class
• Class not intended to be extended• Improves performance JVM does not have to search
for subclass methods that might override superclass methods
• Implements security by restricting class extension• Keyword:
– final» Used in class header to declare a final class» e.g. public final class Boat
Chapter 7 - Generalization/Specialization and Inheritance 17
Overriding a Superclass Method
• Method Overriding– Occurs when method in subclass is
invoked instead of method in superclass• Both methods have the same signature
– Allows subclass to modify the behavior of the superclass
• Compare overriding with overloading
Chapter 7 - Generalization/Specialization and Inheritance 18
Overriding a Superclass Method
• Adding & Overriding tellAboutSelf Method– Use same tellAboutSelf method signature in
subclass– Implement new functionality in overridden
method definition– Can invoke methods from super or sub class– Compare tellAboutSelf() in Figures 7-15, 7-
16
Chapter 7 - Generalization/Specialization and Inheritance 19
Overriding a Superclass Method
• Overriding & Invoking a Superclass Method– Two basic ways to override a superclass
method• Override completely – Saleboat 7-16
– Redefine what the method does• Override and append – Powerboat 7-19
– Override method– Call super to execute superclass method– Add additional functionality to overridden method
Chapter 7 - Generalization/Specialization and Inheritance 20
Overriding a Superclass Method
• Testing Two Method-Overriding Approaches– TesterThreeB tester program (Figure 7-20)
• Creates instances of both subclass, populates them, and demonstrates method overriding
– Sequence diagram• Shows how TesterThreeB interacts with the
Sailboat and Powerboat classes
Chapter 7 - Generalization/Specialization and Inheritance 21
Chapter 7 - Generalization/Specialization and Inheritance 22
Overriding a Superclass Method
• Overriding, Polymorphism, and Dynamic Binding– Polymorphism
• Objects of different classes can respond to the same message in their own way
• Simplifies processing:– Responsibility of responding appropriately is left
to the particular instance– Method overriding
• Form of polymorphism
Chapter 7 - Generalization/Specialization and Inheritance 23
Overriding a Superclass Method
• Overriding, Polymorphism, and Dynamic Binding– Dynamic Binding
• Resolves which method to invoke at runtime if overridden methods exist
• Provides flexibility when adding new subclasses to a system
Chapter 7 - Generalization/Specialization and Inheritance 24
Understanding Private Versus Protected Access
• Private access– No other object can directly read or
modify the value of an attribute• Must use accessor methods
– Also limits ability of subclass to directly access private variables of superclass• Must use accessor methods
Chapter 7 - Generalization/Specialization and Inheritance 25
Understanding Private Versus Protected Access
• Protected access– Subclass has direct access to protected
variables of superclass – pp. 236• Other classes in same package have direct access
as well– Can also use with methods– Use with care…
– Avoid use of public keyword with attributes• Violates encapsulation and information hiding