Download presentation
Presentation is loading. Please wait.
Published byBeverley Greer Modified over 8 years ago
1
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism
2
Java Programming: Guided Learning with Early Objects2 Objectives Learn about inheritance Learn about subclasses and superclasses Explore how to override the methods of a superclass Examine how constructors of superclasses and subclasses work together
3
Java Programming: Guided Learning with Early Objects3 Objectives (continued) Become familiar with protected members of a class Learn about polymorphism Examine abstract classes Become familiar with interfaces Learn about composition (aggregation)
4
Java Programming: Guided Learning with Early Objects4 Inheritance Mechanism that allows class definition to be extended –No changes to existing class –Implies “is-a” relationship Subclass: new class derived from existing class –Also called derived class Superclass: existing class that other classes are derived from –Also called base class
5
Java Programming: Guided Learning with Early Objects5 Figure 9-1 Inheritance hierarchy
6
Java Programming: Guided Learning with Early Objects6 Inheritance (continued) Inheritance has a hierarchical structure Syntax: modifiers class ClassName extends BaseClass modifiers { memberList } private members of the superclass cannot be accessed directly by the subclass
7
Java Programming: Guided Learning with Early Objects7 Inheritance (continued) Subclass directly accesses public members of superclass Subclass can include additional members Subclass can override public methods of superclass –Subclass can shadow public variables of superclass Members of superclass are also members of subclass
8
Java Programming: Guided Learning with Early Objects8 Inheritance (continued) Single inheritance: subclass derived from a single superclass Multiple inheritance: subclass derived from more than one superclass Java supports only single inheritance Constructor of subclass cannot directly access private data members of the superclass
9
Java Programming: Guided Learning with Early Objects9 Using Methods of the Superclass in a Subclass Data members of subclass include its own data members and members of superclass Overriding: subclass method may have same signature as method in superclass –Also called redefining a method –Corresponding method in subclass must have same name and formal parameters Overloading: same name, different formal parameter list
10
Java Programming: Guided Learning with Early Objects10 Figure 9-2 UML class diagram of the class Rectangle
11
Java Programming: Guided Learning with Early Objects11 Figure 9-3 UML class diagram of the class Box and the inheritance hierarchy
12
Java Programming: Guided Learning with Early Objects12 Using Methods of the Superclass in a Subclass (continued) Write method definitions of a subclass to specify a call to a public method of superclass: –Subclass overrides public method Must call method of using super, dot operator, method name, parameter list –Subclass does not override public method Call public method using method name, parameter list
13
Java Programming: Guided Learning with Early Objects13 Constructors of the Superclass and Subclass Subclass may have its own private data members –Should have its own constructors Constructors initialize instance variables
14
Java Programming: Guided Learning with Early Objects14 Constructors of the Superclass and Subclass (continued) Subclass inherits instance variables of superclass –Cannot directly access private instance variables of superclass –Cannot directly access private methods of superclass
15
Java Programming: Guided Learning with Early Objects15 Constructors of the Superclass and Subclass (continued) Subclass constructors should initialize only the instance variables of the subclass Call superclass constructor to instantiate superclass instance variables Reserved word super calls superclass constructor Superclass constructor parameters passed to super
16
Java Programming: Guided Learning with Early Objects16 Figure 9-4 Objects myRectangle and myBox
17
Java Programming: Guided Learning with Early Objects17 Protected Members of a Class private class members cannot be accessed directly outside the class Subclass cannot access private members of superclass directly Making private members public violates encapsulation
18
Java Programming: Guided Learning with Early Objects18 Protected Members of a Class (continued) protected members can be accessed directly by subclasses UML diagram: # means protected
19
Java Programming: Guided Learning with Early Objects19 Figure 9-6 UML class diagram of the class BaseClass
20
Java Programming: Guided Learning with Early Objects20 Figure 9-7 UML class diagram of the class DerivedClass and the inheritance hierarchy
21
Java Programming: Guided Learning with Early Objects21 class Object Recall that class Clock included the method toString Every Java class includes method toString –Method toString comes from Java class Object Defining a class without using extends derives the class from Object class Object is the superclass of every Java class
22
Java Programming: Guided Learning with Early Objects22 Table 9-1 A Constructor and Some Methods of the class Object
23
Java Programming: Guided Learning with Early Objects23 class Object (continued) Every public member of class Object can be overridden or invoked by every object –Method toString is a public member of every Java class Default definition returns class name and hash code of object as a string –Method equals determines whether two objects are aliases –Method clone makes shallow copy of an object
24
Java Programming: Guided Learning with Early Objects24 Java Stream Classes Recall that class Scanner is used for inputting data from standard input device –I/O performed using FileReader and PrintWriter class InputStreamReader derived from class Reader class FileReader derived from class InputStreamReader class PrintWriter derived from class Writer
25
Java Programming: Guided Learning with Early Objects25 Figure 9-8 Java stream classes hierarchy
26
Java Programming: Guided Learning with Early Objects26 Polymorphism via Inheritance Methods in different classes may have same name and same formal parameter list Reference variable of a class can refer to object of its own class or a subclass Reference variable can invoke method of its own class or of its subclasses
27
Java Programming: Guided Learning with Early Objects27 Polymorphism via Inheritance (continued) Binding: associating a method definition with its invocation Early binding: method’s definition associated with its invocation at compile time Late binding: method’s definition associated with its invocation at run time
28
Java Programming: Guided Learning with Early Objects28 Polymorphism via Inheritance (continued) Java uses late binding for all methods Polymorphism: associating multiple meanings with the same method name Polymorphic reference variables can point to own class or objects of subclasses
29
Java Programming: Guided Learning with Early Objects29 Operator instanceof Object of subclass can be considered object of superclass Using appropriate cast operator can treat object of superclass as an object of subclass Operator instanceof determines class type of an object reference
30
Java Programming: Guided Learning with Early Objects30 Abstract Methods and Classes Abstract method has only heading but no body Heading contains reserved word abstract –Ends with a semicolon Example: public void abstract print ();
31
Java Programming: Guided Learning with Early Objects31 Abstract Methods and Classes (continued) Abstract class declared with reserved word abstract in heading Abstract class contains instance variables, constructors, and non abstract methods Abstract class contains one or more abstract methods
32
Java Programming: Guided Learning with Early Objects32 Abstract Methods and Classes (continued) If class contains abstract method, class must be declared abstract Cannot instantiate an object of an abstract class –Can declare a reference variable of abstract class type
33
Java Programming: Guided Learning with Early Objects33 Abstract Methods and Classes (continued) Can instantiate an object of a subclass of an abstract class –Must define all abstract methods of the superclass Used as superclasses from which other subclasses can be derived –Placeholders to store common members
34
Java Programming: Guided Learning with Early Objects34 Figure 9-9 Inheritance hierarchy of banking accounts
35
Java Programming: Guided Learning with Early Objects35 Interfaces Recall that class ActionListener is an interface Other interfaces: –interface WindowListener –interface MouseListener Java does not support multiple inheritance –Class can extend definition of only one class Java program may contain variety of GUI components –Generate many events
36
Java Programming: Guided Learning with Early Objects36 Interfaces (continued) Java program can implement many interfaces Inner class implements appropriate interface Interface contains only abstract methods and named constants Interfaces defined using reserved word interface
37
Java Programming: Guided Learning with Early Objects37 Polymorphism via Interfaces Interfaces allow GUI programs to handle more than one type of event Events handled by separate interfaces Interface used in implementation of abstract data types Hides implementation details from user
38
Java Programming: Guided Learning with Early Objects38 Polymorphism via Interfaces (continued) Can create polymorphic references using interfaces –Interface name as type of reference variable Cannot create object of an interface –Interface contains only method headings and named constants
39
Java Programming: Guided Learning with Early Objects39 Polymorphism via Interfaces (continued) Interface name can declare a parameter to a method Any reference variable of class that implements an interface can be passed as parameter
40
Java Programming: Guided Learning with Early Objects40 Composition (Aggregation) Composition: one or more members of a class are objects of one or more other classes “Has-a” relationship Example: –“Every person has a birthday.”
41
Java Programming: Guided Learning with Early Objects41 Figure 9-17 UML class diagram of the class Date
42
Java Programming: Guided Learning with Early Objects42 Figure 9-18 UML class diagram of the class PersonalInfo and composition (aggregation)
43
Java Programming: Guided Learning with Early Objects43 Summary Inheritance and composition are meaningful ways to relate two or more classes Inheritance is an “is-a” relationship Composition (aggregation) is a “has-a” relationship Single inheritance: subclass derived from only one superclass Multiple inheritance: subclass derived from one or more superclasses
44
Java Programming: Guided Learning with Early Objects44 Summary (continued) Java allows only single inheritance private members of a superclass are private to the superclass –Subclass cannot access them directly Subclass can override methods of a superclass –Available only to objects of subclass
45
Java Programming: Guided Learning with Early Objects45 Summary (continued) If subclass overrides public method of superclass –Specify a call to public method of superclass Use reserved word super, dot operator, method name, and parameter list Dot operator and method name not required for constructor If subclass does not override a public method of superclass –Specify method call using name of method, parameter list
46
Java Programming: Guided Learning with Early Objects46 Summary (continued) Call to constructor of superclass uses reserved word super with appropriate parameter list –Call to super must be first statement Modifier protected gives subclass direct access to members –protected members may be accessed by any class in the same package Classes not explicitly derived from other classes derived from class Object
47
Java Programming: Guided Learning with Early Objects47 Summary (continued) class Object directly or indirectly becomes superclass of every class in Java Reference variable of superclass can point to object of subclass type Several methods can have same name and same formal parameter list Reference variable of a class can refer to object of its own class or object of its subclass
48
Java Programming: Guided Learning with Early Objects48 Summary (continued) Early binding: method’s definition associated with its invocation at compile time Late binding: method’s definition associated with invocation at run time Java uses late binding for all methods –Few exceptions Polymorphism: assign multiple meanings to same method –Implemented using late binding
49
Java Programming: Guided Learning with Early Objects49 Summary (continued) Cannot automatically make reference variable of subclass type point to object of superclass Abstract method has only the heading with reserved word abstract Abstract class declared with reserved word abstract in its heading –Contains instance variables, constructors, and non abstract methods –Can contain abstract methods
50
Java Programming: Guided Learning with Early Objects50 Summary (continued) If a class contains abstract method, it must be declared abstract Cannot instantiate an object of an abstract class –Can instantiate object of subclass if you define all abstract methods Interface contains only abstract methods, named constants Class may implement more than one interface
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.