1 / 22

Object Oriented Programming: Inheritance

Object Oriented Programming: Inheritance. Chapter 9. What You Will Learn. Software reusability (Recycling) Inheriting data members and methods from previously defined classes. Introduction. Software Reusability saves time in program development encourages use of proven, debugged code

casey
Download Presentation

Object Oriented Programming: Inheritance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object Oriented Programming: Inheritance Chapter 9

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

  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. 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. 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. Superclass and Subclass • Inheritance produces tree like structures

  7. Superclass and Subclass • Inheritance produces tree like structures

  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

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

  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. 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. 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 • View test program, Figure 9.5

  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 classFigure 9.6 View test programFigure 9.7

  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

  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 • Test program, Figure 9.11

  17. Using protected Instance VariablesAdvantages • Subclassescan modify values directly • Slight increase in performance • Avoid set/get method call overhead

  18. Using protected Instance VariablesDisadvantages • 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. 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 • New version of BasePlusCommissiionEmployee, Figure 9.13 • Test program, Figure 9.14

  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. Instantiating Subclass Object Chain Of Constructor Calls • Example, Figure 9.15 : CommissionEmployee3-BasePlusCommissionEmployee4 hierarchy • 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.17, Test program, demonstrates constructor calls

  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

More Related