Download
chapter 7 generalization specialization and inheritance n.
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 7 Generalization/Specialization and Inheritance PowerPoint Presentation
Download Presentation
Chapter 7 Generalization/Specialization and Inheritance

Chapter 7 Generalization/Specialization and Inheritance

248 Views Download Presentation
Download Presentation

Chapter 7 Generalization/Specialization and Inheritance

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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