Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F...
-
Upload
gerald-king -
Category
Documents
-
view
223 -
download
3
Transcript of Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F...
![Page 1: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/1.jpg)
Chapter 8 Class Inheritance and Interfaces
Superclasses and Subclasses Keywords: super Overriding methods The Object Class Modifiers: protected, final and abstract Abstract classes Polymorphism and Object Casting Interfaces Inner Classes
![Page 2: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/2.jpg)
Superclasses and Subclasses
Circle-radius
+getRadius+setRadius+findArea
Cylinder
-length
+getLength+setLength+findVolume
SubclassSuperclass
UML Diagram
![Page 3: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/3.jpg)
Creating a Subclass
Creating a subclass extends properties and methods from the superclass. You can also:
Add new properties
Add new methods
Override the methods of the superclass
Cylinder ClassCylinder Class
![Page 4: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/4.jpg)
Example 8.1Testing Inheritance
Objective: Create a Cylinder object and explore the relationship between the Cylinder and Circle classes.
TestCylinderTestCylinder RunRun
![Page 5: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/5.jpg)
Using the Keyword super
To call a superclass constructor
To call a superclass method
The keyword super refers to the superclass of the class in which super appears. This keyword can be used in two ways:
![Page 6: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/6.jpg)
Example 8.2 Overriding Methods in the Superclass
The Cylinder class overrides the findArea() method defined in the Circle class.
TestOverrideMethodsTestOverrideMethods RunRun
CylinderCylinder
![Page 7: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/7.jpg)
The Object Class
The Object class is the root of all Java classes.
The equals() method compares thecontents of two objects.
The toString() method returns a string representation of the object.
The clone() method copy objects
![Page 8: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/8.jpg)
The Object Class, cont.
The equals() method compares thecontents of two objects. The default implementation of the equals method in the Object class is as follows:
public boolean equals(Object obj) { return (this == obj);}
![Page 9: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/9.jpg)
The Object Class, cont.
The toString() method returns a string representation of the object. The default implementation returns a string consisting of a class name of which the object is an instance, the at sign (@), and a number representing this object.
The clone() method copy objects
![Page 10: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/10.jpg)
The Object Class, cont.To create a new object with separate memory space, you need to use the clone() method, as follows:
newObject = someObject.clone();
NOTE: Not all objects can be cloned. For an object to be cloneable, its class must implement the java.lang.Cloneable interface. Interfaces are introduced in the section "Interfaces," in this chapter.
![Page 11: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/11.jpg)
The protected Modifier
The protected modifier can be applied on data and methods in a class. A protected data or a protected method in a public class can be accessed by any class in the same package or its subclasses, even if the subclasses are in a different package.
![Page 12: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/12.jpg)
The protected Modifier, cont.
pacakge p1
class C1
protected int x
class C3
C1 c1;c1.x can be read ormodified
pacakge p2
class C2 extends C1
x can be read ormodified in C2
class C4
C1 c1;c1.x cannot be readnor modified
![Page 13: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/13.jpg)
The final Modifier
The final class cannot be extended: final class Math {...}
The final variable is a constant: final static double PI = 3.14159;
The final method cannot bemodified by its subclasses.
![Page 14: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/14.jpg)
The abstract Modifier The abstract class
– Cannot be instantiated
– Should be extended and implemented in subclasses
The abstract method– Method signature without
implementation
![Page 15: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/15.jpg)
Abstract Classes
GeometricObjectGeometricObject CircleCircle CylinderCylinder RectangleRectangle
Circle -radius: double +getRadius(): double +setRadius(radius: double): void
Cylinder
-length: double +getLength(): double +setLength(length: double): void +findVolume(): double
GeometricObject -color: String -filled: boolean +getColor(): String +setColor(String color): void +isFilled(): boolean +setFilled(boolean filled): void +findArea(): double +findPerimeter(): double
Object
Rectangle -width: double -length: double +getWidth(): double +setWidth(width: double): void +getLength(): double +setLength(length: double): void
UML Notation: The abstract class name and the abstract method names are italicized.
![Page 16: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/16.jpg)
Polymorphism and Dynamic Binding
Polymorphism refers to the ability to determine at runtime which code to run, given multiple methods with the same name but different operations in the same class or in different classes. This ability is also known as dynamic binding.
![Page 17: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/17.jpg)
Example 8.3 Testing Polymorphism
Objective: This example creates two geometric objects: a circle, and a rectangle, invokes the equalArea method to check if the two objects have equal area, and invokes the displayGeometricObject method to display the objects.
TestPolymorphismTestPolymorphism RunRun
![Page 18: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/18.jpg)
Casting Objects
It is always possible to convert a subclass to a superclass. For this reason, explicit casting can be omitted. For example,
Circle myCircle = myCylinder
is equivalent to
Circle myCircle = (Circle)myCylinder;
![Page 19: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/19.jpg)
Casting fromSuperclass to Subclass
Explicit casting must be used when casting an object from a superclass to a subclass. This type of casting may not always succeed.
Cylinder myCylinder = (Cylinder)myCircle;
![Page 20: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/20.jpg)
The instanceof Operator
Use the instanceof operator to test whether an object is an instance of a class:
Circle myCircle = new Circle();
if (myCircle instanceof Cylinder) { Cylinder myCylinder = (Cylinder)myCircle; ...}
![Page 21: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/21.jpg)
Example 8.4Casting Objects
This example creates two geometric objects: a circle, and a cylinder, invokes the displayGeometricObject method to display the objects. The displayGeometricObject displays the area and perimeter if the object is a circle, and displays area and volume if the object is a cylinder.
TestCastingTestCasting RunRun
![Page 22: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/22.jpg)
Interfaces
What Is an Interface?
Creating an Interface
Implementing an Interface
What is Marker Interface?
![Page 23: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/23.jpg)
Creating an Interface
modifier interface InterfaceName{ constants declarations; methods signatures;}
![Page 24: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/24.jpg)
Example of Creating an Interface
// This interface is defined in
// java.lang package
public interface Comparable
{
public int compareTo(Object o);
}
![Page 25: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/25.jpg)
Generic max Methodpublic class Max
{
// Return the maximum between two objects
public static Comparable max
(Comparable o1, Comparable o2)
{
if (o1.compareTo(o2) > 0)
return o1;
else
return o2;
}
}
![Page 26: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/26.jpg)
Example 8.5 Using Interfaces
Objective: Use the max method to find a find the maximum circle between two circles and a maximum cylinder between two cylinders.
![Page 27: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/27.jpg)
Example 8.5, cont.
TestInterfaceTestInterface RunRun
Circle -
Cylinder
GeometricObject -
java.lang.Comparable
compareTo
Notation: The interface name and the method names are italicized. The dashed lines and hollow triangles are used to point to the interface.
ComparableCircle -
ComparableCylinder -
![Page 28: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/28.jpg)
Interfaces vs. Abstract Classes
In an interface, the data must be constants; an abstract class can have all types of data.
Each method in an interface has only a signature without implementation; an abstract class can have concrete methods. An abstract class must contain at least one abstract method or inherit from another abstract method.
![Page 29: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/29.jpg)
Interfaces vs. Abstract Classes, cont.
Since all the methods defined in an interface are abstract methods, Java does not require you to put the abstract modifier in the methods in an interface, but you must put the abstract modifier before an abstract method in an abstract class.
![Page 30: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/30.jpg)
Interfaces vs. Abstract Classes, cont.
Object Class1
Interface1 Interface1_1
Interface1_2
Class2
Interface2_1
Interface2_2
![Page 31: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/31.jpg)
The Cloneable Interfaces
public interface Cloneable {
}
Marker Interface: An empty interface.
A marker interface does not contain constants or methods, but it has a special meaning to the Java system. The Java system requires a class to implement the Cloneable interface to become cloneable.
![Page 32: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/32.jpg)
Example 8.6 Cloning Objects
Objective: uses the Cloneable interface to mark classes cloneable and uses the clone method to copy objects.
TestCloneableTestCloneable RunRun
![Page 33: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/33.jpg)
Example 8.6 Cloning Objects, cont.
c1: CloneableCircle radius = 5 creator = {"Yong", ‘D’, "Liang")
5
Memory
reference creator: Name firstname = "Yong" mi = ‘D’ firstname = "Liang"
c2: CloneableCircle radius = 5 creator = {"Yong", ‘D’, "Liang")
5
reference
![Page 34: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/34.jpg)
Inner Classes
Inner class: A class is a member of another class.
Advantages: In some applications, you can use an inner class to make programs simple.
An inner class can reference the data and methods defined in the outer class in which it nests, so you do not need to pass the reference of the outer class to the constructor of the inner class.
ShowInnerClassShowInnerClass
![Page 35: Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses Keywords: super F Overriding methods The Object Class Modifiers: protected,](https://reader035.fdocuments.in/reader035/viewer/2022062409/5697bfc21a28abf838ca4e0c/html5/thumbnails/35.jpg)
Inner Classes (cont.) Inner classes can make programs simple and
concise. As you see, the new class is shorter and leaner. Many Java development tools use inner classes to generate adapters for handling events. Event-driven programming is introduced in Chapter 8, "Getting Started with Graphics Programming.”
An inner class is only for supporting the work of its containing outer class, and it cannot be used by other classes.