1 / 25

Chapter 7 Generalization/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

chuck
Télécharger la présentation

Chapter 7 Generalization/Specialization and Inheritance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 7Generalization/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 Chapter 7 - Generalization/Specialization and Inheritance

More Related