Chapter 11 Inheritance and Composition Chapter 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 Chapter Objectives • Examine abstract classes • Become aware of interfaces • Learn about composition Inheritance • “is-a” relationship • Single inheritance – Subclass is derived from one existing class (superclass) • Multiple inheritance – Subclass is derived from more than one superclass – Not supported by Java – In Java, a class can only extend the definition of one class Inheritance modifier(s) class ClassName extends ExistingClassName modifier(s) { memberList } Inheritance: class Circle Derived from Shape public class Circle extends Shape { . . . } Inheritance • Private members of superclass – private to superclass; they cannot be accessed directly by subclass • Subclass can override public methods of the superclass; redefinition applies only to object of subclass Inheritance • To write a method definition of a subclass specify a call to the public method of the superclass – If subclass overrides public method of superclass, specify call to public method of superclass: super.MethodName(parameter list) – If subclass does not override public method of superclass, specify call to public method of superclass: MethodName(parameter list) UML Diagram: class Rectangle UML Diagram: class Box Defining Constructors of the Subclass • Call to constructor of superclass – must be first statement – specified by: super parameter list Objects myRectangle and myBox Rectangle myRectangle = new Rectangle(5, 3); Box myBox = new Box(6, 5, 4); Protected Members of a Class The class Object • Directly or indirectly becomes the superclass of every class in Java • public members of class Object can be overridden/invoked by object of any class type The class Object: Equivalent Definitions public class Clock { //Declare instance variables as given in Chapter 8 //Definition of instance methods as given in Chapter 8 //... } The class Object 603 is, in fact, equivalent to the following: public class Clock extends Object { //Declare instance variables as given in Chapter 8 //Definition of instance methods as given in Chapter 8 //... } Some Constructors and Methods of the class Object Hierarchy of Java Stream Classes Objects of Superclasses and Subclasses • You cannot automatically make reference variable of subclass type point to object of its superclass • Dynamic binding: method executed determined at execution time, not compile time • Operator instanceof: determines whether reference variable that points to object is of particular class type • ClassCastException thrown if class cast is not allowed Abstract Methods and Classes • Abstract method: method that has only the heading with no body – must be declared abstract • Abstract class: class that is declared with the reserved word abstract in its heading Abstract Class • Can contain instance variables, constructors, finalizer, abstract and nonabstract methods • You cannot instantiate object of abstract class type; can only declare reference variable • You can instantiate an object of a subclass of an abstract class, but only if the subclass gives definitions of all abstract methods of the superclass Abstract Class Example public abstract class AbstractClassExample { protected int x; public void abstract print(); public void setX(int a) { x = a; } public AbstractClassExample() { x = 0; } } Interfaces • Definition: class that contains only abstract methods and/or named constants • How Java implements multiple inheritance • To be able to handle a variety of events, Java allows a class to implement more than one interface Some Interface Definitions Composition • Another way to relate two classes • One or more members of a class are objects of another class type • “has-a” relation between classes – E.g. “every person has a date of birth” Composition Example Programming Example: Grade Report • Components: student, course • Operations on course – – – – – Set course information Print course information Show credit hours Show course number Show grade Components Course and Student Components Course and Student Programming Example: Grade Report • Operations on student – – – – – – Set student information Print student information Calculate number of credit hours taken Calculate GPA Calculate billing amount Sort the courses according to the course number Programming Example: Grade Report • Main algorithm – – – – Declare variables Open input file Open output file Get number of students registered and tuition rate – Load students’ data – Print grade reports UML diagram of class Student Sample Output: Grade Report Program Sample Output: After Clicking Next in Grade Report Program Chapter Summary • Inheritance – – – – – Single and multiple Rules Uses Superclasses/subclasses (objects) Overriding/overloading methods • The class Object – Constructors – Rules Chapter Summary • • • • • Java Stream Classes Abstract methods Abstract classes Interfaces Composition