Inheritance - PowerPoint PPT Presentation

About This Presentation
Title:

Inheritance

Description:

learn how to define and use derived classes. learn about ... class Automobile might add instance variables for wheels, engine size, and license plate number. ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 67
Provided by: rober854
Category:

less

Transcript and Presenter's Notes

Title: Inheritance


1
Inheritance
  • Chapter 7

2
Objectives
  • become acquainted with inheritance
  • learn how to define and use derived classes
  • learn about dynamic binding and polymorphism
  • (optional) learn about the class JFrame used to
    produce windowing interfaces

3
Outline
  • Inheritance Basics
  • Programming with Inheritance
  • Dynamic Binding and Polymorphism
  • (optional) Graphics Supplement

4
Inheritance Basics Outline
  • Introduction to Inheritance
  • Derived Classes
  • Overriding Method Definitions
  • Overriding vs. Overloading
  • The final Modifier
  • UML Inheritance Diagrams

5
Introduction to Inheritance
  • Inheritance allows us to define a general class
    and then define more specialized classes simply
    by adding new details to the more general class
    definition.
  • A more specialized class inherits the properties
    of the more general class, so that only new
    features need to be programmed.

6
Introduction to Inheritance, cont.
  • example
  • General class Vehicle might have instance
    variables for weight and maximum occupancy.
  • More specialized class Automobile might add
    instance variables for wheels, engine size, and
    license plate number.
  • General class Vehicle might also be used to
    define more specialized classes Boat and Airplane.

7
Programming Example A Base Class
  • class Person

8
Derived Classes
  • Consider a college record-keeping system with
    records about students, faculty and staff.

9
Derived Classes, cont.
10
Derived Classes, cont.
  • Even though your program may not need any Person
    or Employee objects, these classes can be useful
    for consolidating and representing features
    common to all subclasses.
  • For example, all students, faculty, and staff
    have names, and these names may need to be
    initialized, changed, retrieved, or printed.

11
Derived Classes, cont.
  • class Student is a derived class of class Person
    and class Person is called the base class.

12
Derived Classes, cont.
  • public class Student extends Person

13
Derived Classes, cont.
  • syntax
  • public class Derived_Class_Name extends
    Base_Class_Name
  • Declarations_of_Added_Instance
  • _Variables
  • Definitions_of_Added_and_Overridden_Methods

14
Derived Classes, cont.
  • When you define a derived class, you declare only
    the added instance variables and you define only
    the added and overridden methods.
  • The variables and methods of the parent class
    which are not declared private are inherited
    automatically.

15
Derived Classes, cont.
  • class InheritanceDemo

16
Derived Classes, cont.
17
Overriding Method Definitions
  • Notice that class Student has a method
    writeOutput with no parameters, and class Person
    also has a method writeOutput with no parameters,
    that class Student inherits.
  • When a derived class defines a method with the
    same name and the same number and types of
    parameters as a method in the base class, the
    method in the derived class overrides the method
    in the base class.

18
Overriding Method Definitions, cont.
  • When overriding a method, you can change the
    method definition to anything you wish, but you
    cannot change the methods heading or the
    methods return type.

19
Overriding vs. Overloading
  • When you override a method, the new method
    definition in the derived class has the same name
    and the same number of types of parameters as the
    method definition in the base class.
  • When the name is the same, but the number or
    types of the parameters differs, whether in the
    base class or in the derived class, the method is
    overloaded in the derived class.

20
Overriding vs. Overloading, cont.
  • example
  • public String getName(String title)
  • in class Student and
  • public String getName()
  • in class Person overload method getName since
    the two methods have different parameter lists.
  • Both methods are available in class Student.

21
The final Modifier
  • You can prevent a method definition from being
    overridden by adding the word final to the method
    heading.
  • example
  • public final void someMethod()
  • This is used rarely, but it produces more
    efficient code.

22
The final Modifier, cont.
  • An entire class can be declared final, in which
    case it cannot be used as a base class to derive
    another class.

23
Private Instance Variables in the Base Class
  • Private instance variables inherited from a base
    class cannot be accessed directly.
  • Instead, they must be accessed using a method
    that is not declared private.
  • While this may seem inconvenient, it provides an
    important mechanism for controlling access and
    changes to instance variables in the base class.

24
Private Methods in the Base Class
  • Like private instance variables, private methods
    inherited from a base class cannot be accessed
    directly.
  • Instead, they, too, must be accessed using a
    method that is not declared private.
  • This, too, provides an important mechanism for
    controlling access to methods in the base class.

25
Private Methods in the Base Class
  • Since private methods typically serve as helping
    methods, their use always is limited to the class
    in which they are defined.

26
UML Inheritance Diagrams
  • Typically, a UML class diagram shows only as much
    as is needed for the design task at hand.

27
UML Inheritance Diagrams, cont.
28
UML Inheritance Diagrams, cont.
  • An arrowhead points from a derived class to its
    base class, indicating an is-a relationship.
  • For example, a Student is-a Person.
  • Inherited instance variables and methods can be
    found by following the arrowheads.

29
UML Inheritance Diagrams, cont.
  • more details of the inheritance hierarchy

30
Programming with Inheritance Outline
  • Constructors in Derived Classes
  • (optional) The this Method
  • Calling an Overridden Method
  • (optional) A Subtle Point About Overloding and
    Overriding
  • The class Object
  • Abstract Classes
  • Interfaces

31
Constructors in Derived Classes
  • A base class has its own constructors.
  • Their purpose typically is to initialize the
    instance variables declared in the base class.
  • A derived class has its own constructors.
  • Their purpose typically is to call a constructor
    in the base class, and then to initialize the
    instance variables declared in the derived class.

32
Constructors in Derived Classes, cont.
  • To call a constructor in the base class, use
  • super(Values_for_Instance_Variables
  • _Declared_in_the_Base_Class)
  • example
  • super(initialName)
  • not
  • Person(initialName) //ILLEGAL

33
Using super
  • The call to the constructor in the base class
    (using super) must be the first action taken in
    the constructor of a derived class.
  • When no call to the constructor in the base class
    is included, Java automatically includes a call
    to the default constructor in the base class.

34
Using super, cont.
  • equivalent definitions
  • public Student()
  • super()
  • studentNumber 0
  • and
  • public Student()
  • studentNumber 0

35
The this Method
  • Within the definition of one constructor, it can
    be appropriate to call another constructor in the
    same class.
  • The keyword this is used to call another
    constructor in the same class.
  • example
  • this(initialName, 0)

36
The this Method, cont.
  • Any use of this must be the first action in the
    constructor definition.
  • Thus, a constructor definition cannot contain a
    call using super and a call using this.
  • To use both super and this, include a call using
    this in one constructor and a call using super in
    the constructor called using this.

37
Calling an Overridden Method
  • super can be used to call a method in the base
    class that has been overridden in the derived
    class.
  • example
  • super.writeOutput()
  • However, you cannot repeat the use of super to
    invoke a method in some ancestor class other than
    the immediate base (parent) class.

38
Programming Example Multilevel Derived Classes
  • Class Undergraduate can be derived from class
    Student which is derived from class Person.
  • Class Undergraduate will have all the instance
    variables and methods of class Student which has
    all the instance variables and methods of class
    Person.

39
Programming Example Multilevel Derived Classes,
cont.
  • class Undergraduate

40
Programming Example Multilevel Derived Classes,
cont.
41
Programming Example Multilevel Derived Classes,
cont.
  • A chain of derived classes permits code to be
    reused which improves efficiency.

42
Terminology
  • A base class often is called a parent class.
  • A derived class then is called a child class.
  • A class that is a parent of a parent ofa parent
    of (with one or more parent ofs) another class
    often is called an ancestor class.
  • A class than is a child of a child ofa child of
    (with one or more child ofs) often is called a
    descendant.

43
(optional) A Subtle Point About Overloading and
Overriding
  • Even when two methods have the same number of
    parameters, a difference in parameter type is
    sufficient to qualify for overloading.
  • But, a reference to an ancestor class type can
    refer to a descendant type.
  • Hence an overridden method in an ancestor class
    sometimes needs to be invoked explicitly using
    super.

44
(optional) A Subtle Point About Overloading and
Overriding, cont.
  • method equals

45
An Object Can Have More than One Type
  • If class Undergraduate is derived from class
    Student and class Student is derived from class
    Person, then every object of class Undergraduate
    is also an object of class Student and an object
    of class Person.
  • A reference to an object of class Undergraduate
    can be substituted for a reference to an object
    of class Student or a reference to an object of
    class Person.

46
An Object Can Have More than One Type, cont.
  • Given
  • public static void compareNumbers (Student s1,
    Student s2)
  • then either
  • SomeClass.compareNumbers
  • (studentObject, undergradObject)
  • or
  • SomeClass.compareNumbers
  • (undergradObject, studentObject)
  • could be used.

47
An Object Can Have More than One Type, cont.
  • However, a reference to an object of class person
    cannot be substituted for a reference to an
    object of class Student or an object of class
    Undergraduate.
  • A reference to an object of an ancestor cannot be
    substituted for a reference to an object of a
    derived class.

48
An Object Can Have More than One Type, cont.
  • Hence, given
  • public static void compareNumbers (Student s1,
    Student s2)
  • neither
  • SomeClass.compareNumbers
  • (studentObject, personObject)
  • nor
  • SomeClass.compareNumbers
  • (personObject, studentObject)
  • could be used.

49
Is a and Has a Relationships
  • A derived class is a more specialized class than
    its base class or any of its ancestor classes.
  • For example, a student is a person.
  • A more complex object has as one or more of its
    instance variables one or more references to
    objects of a simple class, exhibiting a has a
    relationship.
  • For example, a person has a name.

50
The Class Object
  • In Java, every class descends from (and inherits
    features from) the Object class.
  • Therefore, every object of every class is of type
    Object.
  • Unless a class is declared explicitly to be a
    descendant of some other class, it is an
    immediate descendant of the class Object.

51
The Class Object, cont.
  • An object of any class can substituted when a
    parameter of type Object is expected.
  • Every class inherits some methods from the class
    Object
  • equals()
  • toString()
  • but usually these methods are overridden by the
    derived class or by an intermediate ancestor
    class.

52
Method toString
  • Inherited method toString takes no arguments.
  • Typically, method toString is coded to produce
    and return a string which contains everything of
    interest about the object.

53
Method toString, cont.
  • example
  • public String toString()
  • return (Name getName() \n
  • Number getNumber())
  • Whenever a new class is created, a suitable
    toString method should be defined.

54
Method toString, cont.
  • Method toString can be called my the conventional
    means, Object_Name.toString, or by using only
    Object_Name.
  • example
  • System.out.println(s.toString())
  • or
  • System.out.println(s)

55
Method clone
  • Method clone also is inherited from the class
    Object.
  • Method clone takes no arguments and returns a
    copy of the calling object.
  • Even though the data is identical, the objects
    are distinct.
  • Typically, method clone needs to be overridden to
    function properly.
  • See Appendix 8 for more details.

56
Case Study Character Graphics
  • Sometimes terminals, especially older ones, allow
    only text output.
  • Well design three simple classes for simple
    graphics using only text output.
  • One class will produce a box.
  • One class will produce a triangle.
  • One class will draw a pine tree using the other
    two classes.

57
Case Study Character Graphics, cont.
  • Box and triangle figures will have an offset from
    the edge of the screen.
  • A box figure will have a size, expressed as a
    number of characters.
  • A triangle figure will have a size, given by its
    base, with the sides determined automatically.

58
Case Study Character Graphics, cont.
59
Case Study Character Graphics, cont.
  • A base class named Figure will provide the offset
    property common to a box and a triangle and will
    be used to derive class Box and class Triangle.
  • The base class Figure will set the parameters for
    all figures and will draw the figures.

60
Case Study Character Graphics, cont.
  • class Figure

61
Case Study Character Graphics, cont.
  • To draw a box, top to bottom
  • draw the top line
  • draw the side lines
  • draw the bottom line

62
Case Study Character Graphics, cont.
  • class Box

63
Case Study Character Graphics, cont.
  • class Box, contd.
  • Each new method should be tested upon completion.

64
Case Study Character Graphics, cont.
  • To draw a triangle, top to bottom
  • draw an inverted V
  • draw a horizontal line for the base

65
Case Study Character Graphics, cont.
  • class Triangle

66
Case Study Character Graphics, cont.
  • class Triangle, contd.

67
Case Study Character Graphics, cont.
  • To complete the project, produce a driver.

68
Case Study Character Graphics, cont.
class GraphicsDemo
69
Case Study Character Graphics, cont.
70
Abstract Classes
  • An abstract class is not intended to be used to
    create objects.

71
Abstract Classes, cont.
  • By declaring one or more methods to be abstract
    and by omitting the method body, only objects of
    derived classes which override the method(s) can
    be instantiated.
  • example
  • public abstract void drawHere()
  • A class that has at least one abstract method
    must be declared abstract.

72
Abstract Classes, cont.
  • example
  • public abstract class Figure

73
Abstract Classes, cont.
  • class Figure

74
Abstract Classes, cont.
  • An abstract class serves as a placeholder.
  • An abstract class makes it simpler to define
    derived classes.
  • An abstract class assures that all its derived
    classes implement its abstract method(s), or they
    too will be abstract.

75
Interfaces
  • An interface specifies the headings for methods
    that must be defined for any class that
    implements the interface.

76
Interfaces, cont.
  • Interface Writeable

77
Interfaces, cont.
  • To implement an interface, a class must
  • include the phrase
  • implements Interface_Name
  • at the start of the class definition
  • example
  • implements MyInterface, YourInterface
  • implement all the method headings listed in the
    definition of the interface.

78
Interfaces, cont.
  • class WriteableUndergraduate

79
Interfaces, cont.
  • An interface is a type.
  • A method may have a parameter of an interface
    type.
  • Any class that implements the interface can be
    substitute for the parameter.
  • A class can implement any number of interfaces by
    providing implementations for all the methods of
    all the interfaces it claims to implement.

80
Dynamic Binding and Polymorphism Outline
  • Dynamic Binding
  • Type Checking and Dynamic Binding
  • Dynamic Binding with toString
  • Polymorphism

81
Dynamic Binding
  • Different objects can invoke different method
    definitions using the same method name.
  • For example, if b references a Box and t
    references a Triangle, b and t invoke different
    definitions of method drawAt even if b and t are
    declared to be objects of type Figure.

82
Dynamic Binding, cont.
  • Handling the invocation of a method that may be
    overridden later is called dynamic binding or
    late binding.
  • The type of object being referenced at the time
    of the method call, not the type of reference
    that was declared, determines which method is
    invoked.

83
Dynamic Binding, cont.
  • Consider
  • Figure f
  • Box b new Box(1, 4, 4)
  • f b
  • f.drawAt(2)
  • Triangle t new Triangle(1,2)
  • f t
  • f.drawAt(2)

84
Dynamic Binding, cont.
  • Method drawAt is inherited from class Figure and
    is not overridden.
  • But, method drawHere is invoked within the
    definition of method drawAt, and method drawHere
    is overridden.
  • The type of object referred to by f determines
    which method drawHere is invoked.

85
Type Checking and Dynamic Binding
  • Recall that an object reference to an ancestor
    class can refer to an object of a descendant
    class.
  • Employee e new Employee()
  • Person p
  • p e
  • However, you can invoke only a method in class
    Person with the variable p.

86
Type Checking and Dynamic Binding, cont.
  • However, if a method is overridden in the class
    Employee, and variable p references an Employee
    object, then the method in class Employee is
    used.
  • The variable determines what methods can be used,
    but the type referenced by the object determines
    which definition of the method will be used.

87
Type Checking and Dynamic Binding, cont.
  • To use a method name in the class Employee with
    an object named by the variable p of type Person,
    use a type cast.
  • example
  • Employee e (Employee)p
  • e.setEmployeeNumber(5678)

88
Type Checking and Dynamic Binding, cont.
  • However, even a type cast cannot fool Java
  • example
  • Box b new Box (1, 4, 4)
  • Figure f (Figure)b
  • f. drawHere()
  • will use the definition of drawHere given in
  • class Box, not the definition of drawHere
  • given in class Figure.

89
Type Checking and Dynamic Binding, cont.
  • You are unlikely to assign an object of a
    descendant type to a variable of a parent type,
    at least not directly.
  • But, such an assignment can occur indirectly by
    providing an argument of a descendant type for a
    method that has a parameter of an ancestor type.

90
Dynamic Binding with toString
  • Recall method toString typically is used to
    prepare and return a string, describing an
    object, for output to the screen.
  • The name of this method can be omitted, thanks to
    dynamic binding, because one definition of method
    println expects a single argument of type Object
    which it uses to invoke the method toString
    associated with the object.

91
Polymorphism
  • Polymorphism comes from Greek meaning many
    forms.
  • In Java, polymorphism refers to the dynamic
    binding mechanism that determines which method
    definition will be used when a method name has
    been overridden.
  • Thus, polymorphism refers to dynamic binding.

92
Subtle Difference
  • Dynamic binding refers to the process carried out
    by the computer.
  • Polymorphism can be thought of as something
    objects do.
  • Polymorphism, encapsulation, and inheritance, and
    considered to be the main features of
    object-oriented programming.

93
(optional) A Better equals Method
  • Sometimes method equals from class Object is
    overloaded when it should have been overridden.
  • This occurs when its parameter is not of type
    Object.
  • Usually, this is all right.

94
(optional) A Better equals Method, cont.
  • But, if method equals is called with an object of
    class Object as its argument, method equals from
    class Object will be invoked.
  • The problem is fixed by changing the formal
    parameter in the overriding method so that it is
    a parameter of type Object.

95
(optional) A Better equals Method, cont.
  • However, this allows the argument to be any type
    of object, which can produce a run-time error.
  • But, we can determine if an object is of the
    correct type using
  • Object instanceof Class_Name
  • Finally, we should return false when comparing an
    object to a null reference.

96
(optional) A Better equals Method, cont.
  • method equals

97
(optional) Graphics Supplement Outline
  • The Class JApplet
  • The Class JFrame
  • Window Events and Window Listeners
  • The ActionListener Interface

98
The Class JApplet
  • An applet is a derived class from the class
    JApplet
  • public class LabelDemo extends JApplet
  • Class JApplet has methods named init and paint.
  • When you define methods init or paint in an
    applet, you are overriding inherited methods.

99
The Class JApplet, cont.
  • Methods init and/or paint can be invoked without
    having to (re)define them.
  • Thanks to polymorphism, methods init and/or paint
    defined in an applet will be invoked by library
    class methods and other methods when you run the
    applet with the applet (of type JApplet) as the
    parameter to the method.

100
The Class JApplet, cont.
  • The class JApplet is used as a base class to
    derive applets to run from a webpage.

101
The Class JFrame
  • A Graphical User Interface or GUI is simply a
    windowing interface for some kind of program.
  • The class JFrame, rather than the class JApplet,
    is used to produce GUIs that can run as regular
    Java applications.

102
The Class Jframe, cont.
  • class ButtonDemo

103
The Class Jframe, cont
class ShowButtonDemo
104
The Class JFrame, cont.
105
The Class JFrame, cont.
  • The class JFrame, and every class derived from
    it, has a method named setVisible.
  • When its argument has the value true, the GUI is
    visible.
  • Labels, buttons, JFrames, and other components
    inherit method setVisible from a common ancestor.

106
The Class JFrame, cont.
  • A class derived from JFrame has no init method,
    but it does use a constructor.
  • Code that would be in the init method of an
    applet is placed in the constructor of the class
    derived from JFrame.
  • A GUI derived from a JFrame sets an initial size
  • setSize(WIDTH, HEIGHT)

107
Window Events and Window Listeners
  • With a JFrame, a GUIs close-window button needs
    to be programmed.
  • A close-window button generates a window event
    which is handled by a window listener.
  • Class WindowAdapter is a window listener, so
    every class derived from class WindowAdapter is a
    window listener.

108
Window Events and Window Listeners, cont.
  • A window listener is registered with a JFrame GUI
    using method
  • addWindowListener.

109
Window Events and Window Listeners, cont.
  • class WindowDestroyer

110
Window Events and Window Listeners, cont.
  • A WindowDestroyer object is created and
    registered as a window listener for our JFrame
    GUI using
  • WindowDestroyer listener
  • new WindowDestroyer()
  • addWindowListener(listener)
  • When the window-close button is clicked, the
    JFrame GUI ends.

111
The ActionListener Interface
  • The ActionListener interface has only one method
    heading that must be implemented.
  • public void actionPerformed
  • (ActionEvent e)
  • A listener that responds to button clicks in an
    applet or in a JFrame must implement the
    ActionListener interface.

112
Programming Example Smiley Face as a JFrame
  • Class JFrame and every class derived from class
    JFrame has a paint method.
  • The paint method can be redefined to draw a
    figure.

113
Programming Example Smiley Face as a Jframe,
cont.
  • class HappyFace

114
Programming Example Smiley Face as a Jframe,
cont.
  • class ShowHappyFace

115
Programming Example Smiley Face as a Jframe,
cont.
116
Summary
  • You have become acquainted with inheritance.
  • You have learned how to define and use derived
    classes.
  • You have learned about dynamic binding and
    polymorphism.
  • (optional) You have learned about the class
    JFrame used to produce windowing interfaces.
Write a Comment
User Comments (0)
About PowerShow.com