Title: Chapter 7 GeneralizationSpecialization and Inheritance Dr' James Jiang
1Chapter 7Generalization/Specialization and
InheritanceDr. James Jiang
2Chapter 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
3Implementing the Boat Generalization/Specializatio
n Hierarchy
- Boat Class
- Includes
- 4 attributes
- Constructor ? invokes 4 accessor (setter) methods
- 8 standard accessor methods
- 4 setters
- 4 getters
4(No Transcript)
5Initial Boat class (I)
6Initial Boat class (II)
7Implementing the Boat Generalization/Specializatio
n Hierarchy
- Testing the Boat Superclass
- TesterOne tester program
- Creates three boat instances
- Retrieves information about each instance
- Sequence diagram
- Shows how TesterOne interacts with the Boat class
- Boat is ready to use as a superclass
8TesterOne.java
9Implementing the Boat Generalization/Specializatio
n 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
10Implementing the Boat Generalization/Specializatio
n 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)
11(No Transcript)
12Implementing the Boat Generalization/Specializatio
n Hierarchy
- Using the Extends Keyword to Create the Sailboat
Subclass - To use inheritance
- Need to know constructor and method signatures
- Do not need
- Access to source code
- Knowledge of how class is written
13Sailboat class definition (I)
14Sailboat class definition (II)
15Implementing the Boat Generalization/Specializatio
n Hierarchy
- Testing the Sailboat Subclass
- TesterTwoA tester program
- Creates 3 Sailboat instances and populates them
- Can use any methods defined in super or sub class
- Sequence diagram
- Shows how TesterTwoA interacts with the Sailboat
class
16TesterTwoA.java
17Implementing the Boat Generalization/Specializatio
n Hierarchy
- Adding a Second Subclass Powerboat
- Powerboat Class
- Second class can be extended from Boat without
effecting any other classes derived from Boat - TesterTwoB tester program
- Creates instances of both subclass and populates
them - Sequence diagram
- Shows how TesterTwoB interacts with the Sailboat
and Powerboat classes
18Powerboat class definition
19Understanding 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
20Understanding 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
21Overriding 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
22Overriding 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
23Abstract Boat class with tellAboutSelf method
24Overriding a Superclass Method
- Overriding Invoking a Superclass Method
- Two basic ways to override a superclass method
- Override completely
- Redefine what the method does
- Override and append
- Override method
- Call super to execute superclass method
- Add additional functionality to overridden method
25Sailboat class that overrides the tellAboutSelf
method (I)
26Sailboat class that overrides the tellAboutSelf
method (II)
27Overriding a Superclass Method
- Testing Two Method-Overriding Approaches
- TesterThreeB tester program
- Creates instances of both subclass, populates
them, and demonstrates method overriding - Sequence diagram
- Shows how TesterThreeB interacts with the
Sailboat and Powerboat classes
28TesterThreeA.java
29Overriding a Superclass Method
- Overriding and Polymorphism
- 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
30Powerboat class overrides and invokes
tellAboutSelf method (I)
31Powerboat class overrides and invokes
tellAboutSelf method (II)
32TesterThreeB.java
33Understanding 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
34Understanding Private Versus Protected Access
- Protected access
- Subclass has direct access to private variables
of superclass - 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