270 likes | 606 Views
Chapter 7 Generalization/Specialization and Inheritance. 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
E N D
Chapter 7Generalization/Specialization and Inheritance Chapter 7 - Generalization/Specialization and Inheritance
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 Chapter 7 - Generalization/Specialization and Inheritance