Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object Oriented Programming: Inheritance Chapter 9.

Similar presentations


Presentation on theme: "Object Oriented Programming: Inheritance Chapter 9."— Presentation transcript:

1 Object Oriented Programming: Inheritance Chapter 9

2 2 What You Will Learn  Software reusability (Recycling)  Inheriting data members and methods from previously defined classes

3 3 Introduction  Software Reusability  saves time in program development  encourages use of proven, debugged code  reduces problems  Write programs in general fashion  Enables software designers to deal with complexity of modern software

4 4 Introduction  When creating a new class …  designate that class to inherit data members, functions of previously defined superclass  result is a subclass  Subclass adds new data members and functions  Replace and refine existing members

5 5 Base Classes & Derived Classes  Superclass is more general  student, shape, loan  Subclass is more specific  grad student, undergrad  circle, triangle, rectangle  carloan, home improvement, mortgage  Some languages talk of  Base class (Superclass)  Derived class (Subclass)

6 6 Superclass and Subclass  Inheritance produces tree like structures

7 7 Superclass and Subclass  Inheritance produces tree like structures

8 8 Design Tip  Important link between subclass and superclass  The “IS-A” relationship  Examples  A checking account IS-A banking account  A savings account IS NOT a checking account  If there is no IS-A relationship, do not use inheritance Sun comments on the concept of inheritance Sun comments on the concept of inheritance

9 9 protected Members  protected access  Intermediate level of protection between public and private  protected members accessible by  superclass members  subclass members  Class members in the same package  Subclass access to superclass member  Keyword super and a dot (.)

10 10 Comments on Private vs. Protected  Use protected when  Superclass should provide a service only to its subclasses  Should not provide service to other clients  Use private so that  Superclass implementation can change without affecting subclass implementations  Author advocates avoiding protected  Instead provide set and get methods to access private data items (see Figures 9.12, 9.13 in text) Figures 9.129.13Figures 9.129.13

11 11 Relationship between Superclasses and Subclasses  Superclass and subclass relationship  Example: CommissionEmployee/ BasePlusCommissionEmployee inheritance hierarchy  CommissionEmployee  First name, last name, SSN, commission rate, gross sale amount  BasePlusCommissionEmployee  First name, last name, SSN, commission rate, gross sale amount  Base salary

12 12 Creating and Using a CommissionEmployee Class  Class CommissionEmployee  Extends class Object  Keyword extends  Every class in Java extends an existing class  Except Object  Every class inherits Object ’s methods  New class implicitly extends Object  If it does not extend another class

13 13 Creating and Using a CommissionEmployee Class  Class CommissionEmployee  Extends class Object  Keyword extends  Every class in Java extends an existing class  Except Object  Every class inherits Object ’s methods  New class implicitly extends Object  If it does not extend another class  View class Figure 9.4 Figure 9.4Figure 9.4  View test program, Figure 9.5 Figure 9.5Figure 9.5

14 14 Creating a BasePlusCommissionEmployee Class without Using Inheritance  Class BasePlusCommissionEmployee  Implicitly extends Object  Much of the code is similar to CommissionEmployee  private instance variables  public methods  constructor  Additions  private instance variable baseSalary  Methods setBaseSalary and getBaseSalary View class Figure 9.6 View test program Figure 9.7

15 15 Creating a CommissionEmployee- BasePlusCommiionEmployee Inheritance Hierarchy  Class BasePlusCommissionEmployee2  Extends class CommissionEmployee  Is a CommissionEmployee  Has instance variable baseSalary  Inherits public and protected members  Constructor not inherited  Note these points plus invalid references, Figure 9.8 – note compiler error messages Figure 9.8 error messages Figure 9.8 error messages

16 16 Using protected Instance Variables  Use protected instance variables  Enable class BasePlusCommissionEmployee to directly access superclass instance variables  Superclass’s protected members are inherited by all subclases of that superclass  View version that now works, Figure 9.10 Figure 9.10Figure 9.10  Test program, Figure 9.11 Figure 9.11Figure 9.11

17 17 Using protected Instance Variables Advantages  Subclasses can modify values directly  Slight increase in performance  Avoid set/get method call overhead

18 18 Using protected Instance Variables Disadvantages  No validity checking  subclass can assign illegal value  Implementation dependent  subclass methods more likely dependent on superclass implementation  superclass implementation changes may result in subclass modifications  Fragile (brittle) software

19 19 Reexamine Hierarchy  Use the best software engineering practice  Declare instance variables as private  Provide public get and set methods  Use get method to obtain values of instance variables  View new version of CommissionEmployee, Figure 9.12 Figure 9.12 Figure 9.12  New version of BasePlusCommissiionEmployee, Figure 9.13 Figure 9.13Figure 9.13  Test program, Figure 9.14 Figure 9.14Figure 9.14

20 20 Instantiating Subclass Object Chain Of Constructor Calls  Subclass constructor invokes superclass constructor  Implicitly or explicitly  Base of inheritance hierarchy  Last constructor called in chain is Object ’s constructor  Original subclass constructor’s body finishes executing last

21 21 Instantiating Subclass Object Chain Of Constructor Calls  Example, Figure 9.15 : CommissionEmployee3- BasePlusCommissionEmployee4 hierarchy Figure 9.15 Figure 9.15  CommissionEmployee3 constructor called second last (last is Object constructor)  CommissionEmployee3 constructor’s body finishes execution second (first is Object constructor’s body)  Figure 9.16, BasePlusCommissionEmploye5 Figure 9.16 Figure 9.16  Figure 9.17, Test program, demonstrates constructor calls Figure 9.17 Figure 9.17

22 22 Software Engineering with Inheritance  At the design stage, certain classes found to be closely related  Factor out common attributes, behaviors  Place these in a superclass  Use inheritance to develop subclasses with inherited capabilities  This avoids proliferation of classes, "reinventing the wheel"  Note  Declaring a subclass does not affect superclass source code


Download ppt "Object Oriented Programming: Inheritance Chapter 9."

Similar presentations


Ads by Google