C A N A D I A N I N T E R N A T I O N A L S C H O O L O F H O N G K O N G INHERITANCE & POLYMORPHISM P2 LESSON 12 P2 LESSON 12.1 INTRODUCTION inheritance: OOP allows a programmer to define new classes from existing classes the procedural paradigm focuses on designing methods and the object-oriented paradigm couples data and methods together into objects P2 LESSON 12.1 INTRODUCTION if a programmer needs to define classes to model circles, rectangles, and triangles these classes have many common features avoid redundancy and make the system easy to comprehend and easy to maintain 1
P2 LESSON 12.2 SUPERCLASS & SUBCLASS inheritance enables a programmer to define a general class (i.e., a superclass) extend it to more specialized classes (i.e., subclasses) a superclass is also referred to as a parent class or a base class, and a subclass as a child class, an extended class, or a derived class a subclass inherits accessible data fields and methods from its superclass and may also add new data fields and methods P2 LESSON 12.2 SUPERCLASS & SUBCLASS syntax for creating subclasses public class subclassname extends superclassname P2 LESSON 12.2 SUPERCLASS & SUBCLASS contrary to the conventional interpretation, a subclass is not a subset of its superclass a subclass usually contains more information and methods than its superclass private data fields in a superclass are not accessible outside the class not all is-a relationships should be modeled using inheritance 2
P2 LESSON 12.2 SUPERCLASS & SUBCLASS inheritance is used to model the is-a relationship some programming languages allows a subclass from several classes known as multiple inheritance Java does not allow multiple inheritance P2 LESSON 12.2 SUPERCLASS & SUBCLASS Practice refer to the Coffee Shop UML diagram create a superclass for the coffee shop decide which attributes and methods belong to the superclass assign new attributes and create new methods for the subclass P2 LESSON 12.3 THE super KEYWORD the keyword super refers to the superclass and can be used to invoke the superclass s methods and constructors the use of the keyword this to reference the calling object the keyword super refers to the superclass of the class in which super appears 3
P2 LESSON 12.3 THE super KEYWORD the syntax to call a superclass s constructor is: super() or super(parameters); must use the keyword super to call the superclass constructor, and the call must be the first statement in the constructor invoking a superclass constructor s name in a subclass causes a syntax error P2 LESSON 12.3 THE super KEYWORD the syntax to call a superclass s method is: super.method(parameters); P2 LESSON 12.4 OVERRIDING METHODS to override a method, the method must be defined in the subclass using the same signature and the same return type as in its superclass method overriding: the subclass modifies the implementation of a method defined in the superclass an instance method can be overridden only if it is accessible a static method cannot be overridden 4
P2 LESSON 12.5 OVERRIDING & OVERLOADING overloading: to define multiple methods with the same name but different signatures overriding: to provide a new implementation for a method in the subclass P2 LESSON 12.5 OVERRIDING & OVERLOADING overridden methods are in different classes related by inheritance overloaded methods can be either in the same class or different classes related by inheritance P2 LESSON 12.5 OVERRIDING & OVERLOADING overridden methods have the same signature and return type overloaded methods have the same name but a different parameter list 5
P2 LESSON 12.6 THE OBJECT CLASS every class in Java is descended from the java.lang.object class for example: the signature of the tostring() method is: public String tostring() P2 LESSON 12.7 POLYMORPHISM polymorphism means that a variable of a supertype can refer to a subtype object the three pillars of object-oriented programming are: encapsulation inheritance polymorphism P2 LESSON 12.7 POLYMORPHISM a class defines a type a type defined by a subclass is called a subtype a type defined by its superclass is called a supertype inheritance relationship enables a subclass to inherit features from its superclass with additional new features subclass is a specialization of its superclass 6
P2 LESSON 12.7 POLYMORPHISM every instance of a subclass is also an instance of its superclass, but not vice versa always pass an instance of a subclass to a parameter of its superclass type an object of a subclass can be used wherever its superclass object is used polymorphism means that a variable of a supertype can refer to a subtype objec P2 LESSON 12.8 DYNAMIC BINDING a method can be implemented in several classes along the inheritance chain the JVM decides which method is invoked at runtime beyond the SL curriculum P2 LESSON 12.9 CASTING OBJECTS casting object: one object reference can be typecast into another object reference upcasting: to cast an instance of a subclass to a variable of a superclass, because an instance of a subclass is always an instance of its superclass downcasting: casting an instance of a superclass to a variable of its subclass 7
P2 LESSON 12.10 equal METHOD like the tostring() method, the equals(object) method is another useful method defined in the Object class the equals method is overridden in many classes in the Java API, such as java.lang.string and java.util.date P2 LESSON 12.11 THE ARRAYLIST CLASS an ArrayList object can be used to store a list of objects. P2 LESSON 12.12 USEFUL METHODS FOR LISTS Java provides the methods for creating a list from an array, for sorting a list, and finding maximum and minimum element in a list, and for shuffling a list beyond the SL curriculum 8
P2 LESSON 12.13 CASE STUDY A Custom Stack Class P2 LESSON 12.14 THE protected DATA a protected member of a class can be accessed from a subclass to allow subclasses to access data fields or methods defined in the superclass, but not to allow nonsubclasses to access these data fields and methods P2 LESSON 12.14 THE protected DATA 9
P2 LESSON 12.15 PREVENTING OVERRIDING neither a final class nor a final method can be extended a final data field is a constant P2 LESSON 12 INHERITANCE & POLYMORPHISM Homework Pg. 445 #11.1, 11.3 10