 2005 Pearson Education, Inc. All rights reserved. 1 9 9 Object-Oriented Programming: Inheritance.

Slides:



Advertisements
Similar presentations
2006 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
Advertisements

Outline 1 Introduction 2 Base Classes and Derived Classes 3 protected Members 4 Relationship between Base Classes and Derived Classes 5 Case Study: Three-Level.
COP 3003 Object-Oriented Programming - Inheritance Dr. Janusz Zalewski, Fall 2013 Prepared by Dr Dahai Guo.
CSE 1302 Lecture 8 Inheritance Richard Gesick Figures from Deitel, “Visual C#”, Pearson.
Dale Roberts Object Oriented Programming using Java - Inheritance Overview Dale Roberts, Lecturer Computer Science, IUPUI
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
Derived Classes in C++CS-2303, C-Term Derived Classes in C++ CS-2303 System Programming Concepts (Slides include materials from The C Programming.
Intro to OOP with Java, C. Thomas Wu Inheritance and Polymorphism
Inheritance Java permits you to use your user defined classes to create programs using inheritance.
(C) 2010 Pearson Education, Inc. All rights reserved. Java™ How to Program, 8/e.
C++ Inheritance Systems Programming.
Java™ How to Program, 9/e Presented by: Dr. José M. Reyes Álamo © Copyright by Pearson Education, Inc. All Rights Reserved.
Object-Oriented Programming: Inheritance Deitel &Deitel Java SE 8.
Dale Roberts Object Oriented Programming using Java - Inheritance Constructors Dale Roberts, Lecturer Computer Science, IUPUI
 2006 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
 2006 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Polymorphism.
1 Evan Korth New York University Inheritance and Polymorphism Professor Evan Korth New York University.
Computer Science I Inheritance Professor Evan Korth New York University.
Object Oriented Programming: Inheritance Chapter 9.
Unit 5 School of Information Systems & Technology1 School of Information Systems and Technology (IST)
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
Lecture 8 Inheritance Richard Gesick. 2 OBJECTIVES How inheritance promotes software reusability. The concepts of base classes and derived classes. To.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
CISC6795: Spring Object-Oriented Programming: Polymorphism.
 2009 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Polymorphism.
 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
Java™ How to Program, 9/e Presented by: Dr. José M. Reyes Álamo © Copyright by Pearson Education, Inc. All Rights Reserved.
More on Object-Oriented Programming: Inheritance 1 -Based on slides from Deitel & Associates, Inc. - Revised by T. A. Yang.
Spring CISC6795: Object Oriented Programming II.
 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance.
Peyman Dodangeh Sharif University of Technology Fall 2014.
 All calls to method toString and earnings are resolved at execution time, based on the type of the object to which currentEmployee refers.  Known as.
Visual Basic 2010 How to Program © by Pearson Education, Inc. All Rights Reserved.
 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 9 - Object-Oriented Programming: Inheritance Outline 9.1 Introduction 9.2 Superclasses and Subclasses.
O O P Polymorphism Object Oriented Programming Prepared & Presented by: dr.Ismail Farahat Chapter 4.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Inheritance.
Object Oriented Programming
 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Polymorphism.
Creating Classes from Other Classes Appendix D © 2015 Pearson Education, Inc., Hoboken, NJ. All rights reserved.
1 Object-Oriented Programming Inheritance. 2 Superclasses and Subclasses Superclasses and Subclasses  Superclasses and subclasses Object of one class.
Visual Basic 2010 How to Program © by Pearson Education, Inc. All Rights Reserved.
 2006 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Polymorphism.
C++ How to Program, 7/e. © by Pearson Education, Inc. All Rights Reserved.2.
Object Oriented Programming: Inheritance Chapter 9.
Object-Oriented Programming: Inheritance
Object-Oriented Programming: Inheritance
Object-Oriented Programming: Inheritance
Week 4 Object-Oriented Programming (1): Inheritance
Road Map Inheritance Class hierarchy Overriding methods Constructors
Object-Oriented Programming: Inheritance
Object-Oriented Programming: Polymorphism
Object-Oriented Programming: Polymorphism
Chapter 9 Object-Oriented Programming: Inheritance
MSIS 670 Object-Oriented Software Engineering
Lecture 22 Inheritance Richard Gesick.
Advanced Programming Behnam Hatami Fall 2017.
Object-Oriented Programming: Inheritance
Object Oriented Programming: Inheritance
Object-Oriented Programming: Inheritance
Recitation Course 0610 Speaker: Liu Yu-Jiun.
Object-Oriented Programming: Inheritance
Chapter 9 Object-Oriented Programming: Inheritance
Object-Oriented Programming: Inheritance
Presentation transcript:

 2005 Pearson Education, Inc. All rights reserved Object-Oriented Programming: Inheritance

 2005 Pearson Education, Inc. All rights reserved Introduction Inheritance – Software reusability – Create new class from existing class Absorb existing class’s data and behaviors Enhance with new capabilities – Subclass extends superclass Subclass – More specialized group of objects – Behaviors inherited from superclass Can customize – Additional behaviors

 2005 Pearson Education, Inc. All rights reserved Introduction (Cont.) Class hierarchy – Direct superclass Inherited explicitly (one level up hierarchy) – Indirect superclass Inherited two or more levels up hierarchy – Single inheritance Inherits from one superclass – Multiple inheritance Inherits from multiple superclasses – Java does not support multiple inheritance

 2005 Pearson Education, Inc. All rights reserved Superclasses and subclasses Superclasses and subclasses – Object of one class “is an” object of another class Example: Rectangle is quadrilateral. – Class Rectangle inherits from class Quadrilateral – Quadrilateral : superclass – Rectangle : subclass – Superclass typically represents larger set of objects than subclasses Example: – superclass: Vehicle Cars, trucks, boats, bicycles, … – subclass: Car Smaller, more-specific subset of vehicles

 2005 Pearson Education, Inc. All rights reserved. 5 Fig. 9.1 | Inheritance examples.

 2005 Pearson Education, Inc. All rights reserved Superclasses and subclasses (Cont.) Inheritance hierarchy – Inheritance relationships: tree-like hierarchy structure – Each class becomes superclass – Supply members to other classes OR subclass – Inherit members from other classes

 2005 Pearson Education, Inc. All rights reserved. 7 Fig. 9.2 | Inheritance hierarchy for university CommunityMembers

 2005 Pearson Education, Inc. All rights reserved. 8 Fig. 9.3 | Inheritance hierarchy for Shapes.

 2005 Pearson Education, Inc. All rights reserved 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 (.)

 2005 Pearson Education, Inc. All rights reserved. 10 Software Engineering Observation 9.1 Methods of a subclass cannot directly access private members of their superclass. A subclass can change the state of private superclass instance variables only through non - private methods provided in the superclass and inherited by the subclass.

 2005 Pearson Education, Inc. All rights reserved 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

 2005 Pearson Education, Inc. All rights reserved 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

 2005 Pearson Education, Inc. All rights reserved. 13 Software Engineering Observation 9.3 The Java compiler sets the superclass of a class to Object when the class declaration does not explicitly extend a superclass.

 2005 Pearson Education, Inc. All rights reserved. 14 Outline CommissionEmployee.java (1 of 4) Line 4 Lines 6-10 Line 16 Lines Lines Class CommissionEmployee extends class Object Implicit call to Object constructor Initialize instance variables Declare private instance variables Invoke methods setGrossSales and setCommissionRate to validate data

 2005 Pearson Education, Inc. All rights reserved. 15 Outline CommissionEmployee.java (2 of 4)

 2005 Pearson Education, Inc. All rights reserved. 16 Outline CommissionEmployee.java (3 of 4) Lines Calculate earnings

 2005 Pearson Education, Inc. All rights reserved. 17 Outline CommissionEmployee.java (4 of 4) Lines Override method toString of class Object

 2005 Pearson Education, Inc. All rights reserved. 18 Common Programming Error 9.1 It is a syntax error to override a method with a more restricted access modifier — a public method of the superclass cannot become a protected or private method in the subclass; a protected method of the superclass cannot become a private method in the subclass.

 2005 Pearson Education, Inc. All rights reserved. 19 Common Programming Error 9.1 If a public method could be overridden as a protected or private method, the subclass objects would not be able to respond to the same method calls as superclass objects. Once a method is declared public in a superclass, the method remains public for all that class’s direct and indirect subclasses.

 2005 Pearson Education, Inc. All rights reserved. 20 Outline CommissionEmployee Test.java (1 of 2) Lines 9-10 Lines Line Instantiate CommissionEmployee objectUse CommissionEmployee ’s get methods to retrieve the object’s instance variable values Use CommissionEmployee ’s set methods to change the object’s instance variable values

 2005 Pearson Education, Inc. All rights reserved. 21 Outline CommissionEmployee Test.java (2 of 2) Line 30 Program output Implicitly call object’s toString method

 2005 Pearson Education, Inc. All rights reserved 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

 2005 Pearson Education, Inc. All rights reserved. 23 Outline BasePlusCommission Employee.java (1 of 4) Line 12 Line 24 Add instance variable baseSalary Use method setBaseSalary to validate data

 2005 Pearson Education, Inc. All rights reserved. 24 Outline BasePlusCommission Employee.java (2 of 4)

 2005 Pearson Education, Inc. All rights reserved. 25 Outline BasePlusCommission Employee.java (3 of 4)

 2005 Pearson Education, Inc. All rights reserved. 26 Outline BasePlusCommission Employee.java (4 of 4) Lines Lines Line 102 Lines Method setBaseSalary validates data and sets instance variable baseSalary Method getBaseSalary returns the value of instance variable baseSalary Update method earnings to calculate the earnings of a base-salaried commission employee Update method toString to display base salary

 2005 Pearson Education, Inc. All rights reserved. 27 Outline BasePlusCommission EmployeeTest.java (1 of 2) Line 9-11 Lines Instantiate BasePlusCommissionEmployee objectUse BasePluCommissionEmployee ’s get methods to retrieve the object’s instance variable values

 2005 Pearson Education, Inc. All rights reserved. 28 Outline BasePlusCommission EmployeeTest.java (2 of 2) Line 29 Line 33 Program output Use BasePlusCommissionEmployee ’s setBaseSalary methods to set base salary Explicitly call object’s toString method

 2005 Pearson Education, Inc. All rights reserved. 29 Software Engineering Observation 9.4 Copying and pasting code from one class to another can spread errors across multiple source code files. To avoid duplicating code (and possibly errors), use inheritance.

 2005 Pearson Education, Inc. All rights reserved. 30 Software Engineering Observation 9.5 With inheritance, the common instance variables and methods of all the classes in the hierarchy are declared in a superclass. When changes are required for these common features, software developers need only to make the changes in the superclass—subclasses then inherit the changes. Without inheritance, changes would need to be made to all the source code files that contain a copy of the code in question.

 2005 Pearson Education, Inc. All rights reserved 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

 2005 Pearson Education, Inc. All rights reserved. 32 Outline BasePlusCommission Employee2.java (1 of 3) Line 4 Line 13 Class BasePluCommissionEmployee2 is a subclass of CommissionEmployee Invoke the superclass constructor using the superclass constructor call syntax

 2005 Pearson Education, Inc. All rights reserved. 33 Outline BasePlusCommission Employee2.java (2 of 3) Line 34 Lines Compiler generates errors because superclass’s instance variable commissionRate and grossSales are private Compiler generates errors because superclass’s instance variable firstName, lastName, socialSecurityNumber, grossSales and commissionRate are private

 2005 Pearson Education, Inc. All rights reserved. 34 Outline BasePlusCommission Employee2.java (3 of 3) Compiler generated errorss

 2005 Pearson Education, Inc. All rights reserved. 35 Common Programming Error 9.2 A compilation error occurs if a subclass constructor calls one of its superclass constructors with arguments that do not match exactly the number and types of parameters specified in one of the superclass constructor declarations.

 2005 Pearson Education, Inc. All rights reserved CommissionEmployee- BasePlusCommissionEmployee Inheritance Hierarchy 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

 2005 Pearson Education, Inc. All rights reserved. 37 Outline Commission Employee2.java (1 of 4) Line 6-10 Declare protected instance variables

 2005 Pearson Education, Inc. All rights reserved. 38 Outline Commission Employee2.java (2 of 4)

 2005 Pearson Education, Inc. All rights reserved. 39 Outline Commission Employee2.java (3 of 4)

 2005 Pearson Education, Inc. All rights reserved. 40 Outline Commission Employee2.java (4 of 4)

 2005 Pearson Education, Inc. All rights reserved. 41 Outline BasePlusCommission Employee3.java (1 of 2) Line 13 Must call superclass’s constructor

 2005 Pearson Education, Inc. All rights reserved. 42 Outline BasePlusCommission Employee3.java (2 of 2) Line 32 Lines Directly access superclass’s protected instance variables

 2005 Pearson Education, Inc. All rights reserved. 43 Outline BasePlusCommission EmployeeTest3.java (1 of 2)

 2005 Pearson Education, Inc. All rights reserved. 44 Outline BasePlusCommission EmployeeTest3.java (2 of 2) Program output

 2005 Pearson Education, Inc. All rights reserved. 45 Common Programming Error 9.3 When a superclass method is overridden in a subclass, the subclass version often calls the superclass version to do a portion of the work. Failure to prefix the superclass method name with the keyword super and a dot (. ) separator when referencing the superclass’s method causes the subclass method to call itself, creating an error called infinite recursion.

 2005 Pearson Education, Inc. All rights reserved Constructors in Subclasses 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 – Example: 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)

 2005 Pearson Education, Inc. All rights reserved. 47 Software Engineering Observation 9.8 When a program creates a subclass object, the subclass constructor immediately calls the superclass constructor (explicitly, via super, or implicitly). The superclass constructor’s body executes to initialize the superclass’s instance variables that are part of the subclass object, then the subclass constructor’s body executes to initialize the subclass- only instance variables.(cont…)

 2005 Pearson Education, Inc. All rights reserved. Constructor and Inheritance Invocation of a superclass constructor must be the first line in the subclass constructor. With super(), the superclass no-argument constructor is called. With super(parameter list), the superclass constructor with a matching parameter list is called. If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no- argument constructor, you will get a compile-time error. Object does have such a constructor, so if Object is the only superclass, there is no problem. 48

 2005 Pearson Education, Inc. All rights reserved. 49 Outline CommissionEmployee 4.java (1 of 4) Lines Constructor outputs message to demonstrate method call order.

 2005 Pearson Education, Inc. All rights reserved. 50 Outline CommissionEmployee 4.java (2 of 4)

 2005 Pearson Education, Inc. All rights reserved. 51 Outline CommissionEmployee 4.java (3 of 4)

 2005 Pearson Education, Inc. All rights reserved. 52 Outline CommissionEmployee 4.java (4 of 4)

 2005 Pearson Education, Inc. All rights reserved. 53 Outline BasePlusCommission Employee5.java (1 of 2) Lines Constructor outputs message to demonstrate method call order.

 2005 Pearson Education, Inc. All rights reserved. 54 Outline BasePlusCommission Employee5.java (2 of 2)

 2005 Pearson Education, Inc. All rights reserved. 55 Outline ConstructorTest.java (1 of 2) Lines 8-9 Lines Instantiate two BasePlusCommissionEmployee5 objects to demonstrate order of subclass and superclass constructor method calls. Instantiate CommissionEmployee4 object

 2005 Pearson Education, Inc. All rights reserved. 56 Outline ConstructorTest.java (2 of 2) Subclass BasePlusCommissionEmployee5 constructor body executes after superclass CommissionEmployee4 ’s constructor finishes execution.

 2005 Pearson Education, Inc. All rights reserved. final and Inheritance Final classes can’t be inherited from “subclassed” final methods cannot be overridden in subclasses. private methods are implicitly final.

 2005 Pearson Education, Inc. All rights reserved Object Class Class Object methods – clone – equals – finalize – getClass – hashCode – notify, notifyAll, wait – toString

 2005 Pearson Education, Inc. All rights reserved. 59 Fig | Object methods that are inherited directly or indirectly by all classes. (Part 1 of 4)

 2005 Pearson Education, Inc. All rights reserved. 60 Fig | Object methods that are inherited directly or indirectly by all classes. (Part 2 of 4)

 2005 Pearson Education, Inc. All rights reserved. 61 Fig | Object methods that are inherited directly or indirectly by all classes. (Part 3 of 4)

 2005 Pearson Education, Inc. All rights reserved. 62 Fig | Object methods that are inherited directly or indirectly by all classes. (Part 4 of 4)