chapter outline what inheritance is calling the superclass constructor overriding superclass methods...

51
Class Inheritance

Upload: bertram-kelly

Post on 05-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Class Inheritance

Page 2: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Chapter OutlineWhat inheritance isCalling the superclass constructorOverriding superclass methodsProtected membersChains of inheritanceThe Object classPolymorphismAbstract Classes and Abstract MethodsInterfaces

Page 3: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

What Inheritance is:The Basic Concept

Page 4: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

InheritanceThe Concept:

Inheritance allows a new class to extend an existing class. The new class inherits the public methods and fields of the class that it extends.

Page 5: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

An example of inheritanceHuman Class

------------------------------------ double Height- double Weight- String Name- int Gender- Date Data of Birth-----------------------------------+ ComputeAge(void) : int+ set and get for all the Fields

Woman extends Human------------------------------------ boolean isPregnant- boolean hasPlayedSoftBall- boolean pageantBefore - boolean cheerLeader-----------------------------------+ int set and get for all class fields+ printInfo() : void

Man extends Human------------------------------------boolean hasPlayedFootball-boolean hasPlayedBaseball-hasBeardAndMustache-----------------------------------+ set and get for all the Fields+ printInfo(void) : void

Page 6: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Let’s create those three classesHuman ClassWoman ClassMan Class

See Inheritance Project

Page 7: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Question of the Day

Inheritance: “is a”To know if you can use

inheritance in your class, ask yourself if your class “is a” of the inherited class

Examples:A poodle is a dogA flower is a plantA rectangle is a shapeA car is a motor???

How do we know what can be inherited?

Page 8: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Chains of Inheritance

Page 9: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Another Example of Inheritance SituationThe final grade of students is based on a set of graded

activities:

All activities generate a score (0-100 points)Each activity has a different way of computing its scoreEach activity has its weight percentage into the final course

grade

Graded Activity

How grade is applied Percentage of final grade

Laboratory Number of correctly completed labs

25%

Midterm Exam Number of corrected answers 35%

Final exam Number of correct answers 40%

Page 10: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

The inheritance tree

Graded Activity Class

Lab Activity Class

Midterm ExamClass

Final ExamClass

Page 11: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Grade Activity Class------------------------------------ score : double- percentage : double- activityType : String-----------------------------------+ setScore(s : double) : void+ getScore() : double+ other setters and getters

LaboratoryActivity------------------------------------ completedLabs : int- numberOfLabs : int-----------------------------------+ computeScore()

Midterm Activity------------------------------------ numberOfQuestions : int - numberOfMisses : int-----------------------------------+ computeScore() + getActivityScore() : double+ getPercentage

FinalExame Activity------------------------------------ numberOfQuestions : int - numberOfMisses : int-----------------------------------+ computeScore() + getActivityScore() : double+ getPercentage

Midterm Activity-----------------------------------+ MidtermActivity( int numberOfMisses, int numberOfQuestions)- sets the percentage- sets the activityType

FinalExam Activity-----------------------------------+ FinalExamActivity( int numberOfMisses, int numberOfQuestions)- sets the percentage- sets the activityType

Exams Activity------------------------------------ numberOfQuestions : int - numberOfMisses : int-----------------------------------+ computeScore() : void+ setNumberOfQuestions()+ getNumberOfQuestions()+ other setters and getters

Page 12: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Calling SuperclassConstructor

Page 13: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Let’s refresh our memory about ConstructorsWhat does a constructor

do?

When is a contructor

called?

Page 14: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Constructors are created when you use the “new” operation to create new objects from a class blue printArrayList<String> listOfStudents = new

ArrayList( );You can use constructors to initialize class fields

and automatically run methods to initialize whatever is necessaryExample: see LaboratoryActivity class

Does every class have a constructor?Yes. If you do not create one, Java will create a

default contructor with no input argumentspublic DefaultConstructor( )

{ }

Page 15: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Which constructor is called?When you create a new object from a sub-

class, like FinalExamActivity, which constructor is called?Is the constructor of the super class called

when creating a sub-class object? Hint: Think about in the case that the super class

initializes some fields

Let’s do a test, let’s modify the GradeActivity project and see what happens…

Page 16: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

As you know, a class can have multiple constructorsDifferent signatures (input arguments)

If your sub-class needs to execute a specific constructor of the super class then just call it from the sub-class constructor like this:

Public SubClass2( ){

super(10);// do your stuff here

}

If a super class has not default constructor, the sub-class MUST call the super class constructor in its (sub-class) constructor!

Page 17: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Inheritance, Fields, and Methods

Page 18: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-18

Inheritance, Fields and MethodsMembers of the superclass that are

marked private:are not inherited by the subclass, exist in memory when the object of the

subclass is createdmay only be accessed from the subclass by

public methods of the superclass.Members of the superclass that are

marked public:are inherited by the subclass, andmay be directly accessed from the subclass.

Page 19: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-19

Inheritance, Fields and MethodsWhen an instance of the subclass is created, the

non-private methods of the superclass are available through the subclass object.

FinalExam exam = new FinalExam();exam.setScore(85.0);System.out.println("Score = " + exam.getScore());

Non-private methods and fields of the superclass are available in the subclass.

setScore(newScore);

See Inheritance Project

Page 20: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Overriding Superclass Methods

Page 21: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Important Points to RememberA sub class can:

Call methods from the super class. These methods are inherited by the sub class

Can create new methods in its body that the super class does not have These new methods cannot be called by

the super classOverride existing methods from the

super class When calling these methods, Java will use

the sub class methods instead of the one from super class

Page 22: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-22

Overriding Superclass MethodsBoth overloading and overriding can take

place in an inheritance relationship.Overriding can only take place in an

inheritance relationship.Example:

See Example next slide SuperClass3.java, SubClass3.java, ShowValueDemo.java

Page 23: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object
Page 24: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

The Final Modifier

Page 25: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-25

Preventing a Method from Being Overridden

The final modifier will prevent the overriding of a superclass method in a subclass.

public final void message()

If a subclass attempts to override a final method, the compiler generates an error.

This ensures that a particular superclass method is used by subclasses rather than a modified version of it.

Page 26: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Example of Final Methods and Fieldsdouble i = Math.PI;

public static final double PI = 3.14159265358979323846;

You do not want anyone to override methods like SINE and COSINE public static final double sin(double a)

Page 27: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

The Protected Access Modifier

Page 28: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-28

Protected Members

Protected members of class:may be accessed by methods in a subclass, andby methods in the same package as the class.

Example: GradedActivity2.javaFinalExam2.javaProtectedDemo.java

Page 29: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-29

Access SpecifiersModifier Class Package Subclass World

public ✔ ✔ ✔ ✔

protected ✔ ✔ ✔ ✘

no modifier ✔ ✔ ✘ ✘

private ✔ ✘ ✘ ✘

Page 30: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

The Object Class

Page 31: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-31

The Object ClassAll Java classes are directly or indirectly derived

from a class named Object.Object is in the java.lang package.Any class that does not specify the extends

keyword is automatically derived from the Object class.

public class MyClass{

// This class is derived from Object.}

Ultimately, every class is derived from the Object class.

Page 32: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-32

The Object Class

Because every class is directly or indirectly derived from the Object class:every class inherits the Object class’s

members. example: toString and equals.

In the Object class, the toString method returns a string containing the object’s class name and a hash of its memory address.

The equals method accepts the address of an object as its argument and returns true if it is the same as the calling object’s address.

Example: ObjectMethods.java

Page 33: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Polymorphism and Abstract Classes

Page 34: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

The Concept of Polymorphism Shape

Rectangle Circle

area()

perimeter()

area()

perimeter()

area()

perimeter()

Circle and Rectangle are concrete classes with their own separate implementations of the methods area() and Perimeter()

Shape is an abstract class with no implementation of area() and perimeter()

Page 35: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

public abstract class Shape {

protected String shapeName;

public Shape(String name) { shapeName = name; }

public abstract double area( ); public abstract double perimeter( ); public String toString( ) { return shapeName; }}

The Concept of Polymorphism

Page 36: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

public class Rectangle extends Shape { protected double length, width; public Rectangle(double len, double wid { super(“Rectangle”); length = len; width = wid; } public double area() { return length * width; } public double perimeter() { return 2.0 * (length + width); }}

public class Circle extends Shape { private double radius; public Circle (double rad) { super (“Circle”); radius = rad; } public double area( ) { return Math.PI * radius * radius; } public double perimeter( ) { return 2.0 * Math.PI * radius; }}

Page 37: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

A Listof Shapes

A container of Shape objects will execute their own area and perimeter methods

The Concept of Polymorphism

Page 38: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

public class ShapeShifter { public static void main (String [ ] args) { Shape [ ] shapeList = new Shape[5]; shapeList[0] = new Circle(3.0); shapeList[1] = new Rectangle(3.0, 4.0); shapeList[2] = new Rectangle(2.5, 7.5); shapeList[3] = new Circle(2.5); shapeList[4] = new Square(5.0); for (int i = 0; i < shapeList.length; i++) { System.out.print (shapeList[i].toString( ) + “ ”

);System.out.print (shapeList[i].area( ) + “ ”);System.out.println (shapeList[i].perimeter( ));

} }}

Create an array to hold objects of (derived from) class Shape

Create objects of the derived classes and put them in shapeList

Iterate through the list and show area and perimeter of shapes

Each derived class object executes its own area and perimeter methods

The Concept of Polymorphism

Page 39: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Abstract Classes and Methods

Page 40: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-40

Abstract ClassAn abstract class cannot be instantiated, but

other classes are derived from it.An Abstract class serves as a superclass for other

classes.A class becomes abstract when you place the

abstract key word in the class definition.

public abstract class ClassName

Page 41: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-41

Abstract Methods

An abstract method has no body and must be overridden in a subclass.

An abstract method is a method that appears in a superclass, but expects to be overridden in a subclass.

Example: See next pageStudent.java, CompSciStudent.java,

CompSciStudentDemo.java

Page 42: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

public abstract class Shape {

protected String shapeName;

public Shape(String name) { shapeName = name; }

public abstract double area( ); public abstract double perimeter( ); public String toString( ) { return shapeName; }}public class Rectangle extends Shape { protected double length, width; public Rectangle(double len, double wid { super(“Rectangle”); length = len; width = wid; } public double area() { return length * width; } public double perimeter() { return 2.0 * (length + width); }}

public class Circle extends Shape { private double radius; public Circle (double rad) { super (“Circle”); radius = rad; } public double area() { return Math.PI * radius * radius; } public double perimeter() { return 2.0 * Math.PI * radius; }}

Page 43: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-43

Abstract MethodsNotice that the key word abstract appears in the

header, and that the header ends with a semicolon. public abstract void setValue(int value);

Any class that contains an abstract method is automatically abstract.

If a subclass fails to override an abstract method, a compiler error will result.

Abstract methods are used to ensure that a subclass implements the method.

Page 44: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

Another Examples of the need for abstract classesYou made a game that all the animals must

jump and make noisesHowever each animal has a different way of

jumping and roar.So you abstract the jump and noise methods

and whoever creates a new animal must implement those methods

You create a pizza recipe program that tells you the steps for creating different types of pizzaSince each pizza has different toppings, you

abstract the listOfIngridients() method

Page 45: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

A little bit moreabout Interfaces

Page 46: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-46

Fields in InterfacesAn interface can contain field declarations:

all fields in an interface are treated as final and static.

Because they automatically become final, you must provide an initialization value.

public interface Doable{ int FIELD1 = 1, FIELD2 = 2; (Method headers...)}

Any class that implements this interface has access to these variables.

Page 47: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-47

Implementing Multiple InterfacesA class can be derived (extended ) from only one

superclass.Java allows a class to implement multiple

interfaces.When a class implements multiple interfaces, it

must provide the methods specified by all of them.

To specify multiple interfaces in a class definition, simply list the names of the interfaces, separated by commas, after the implements key word.

public class MyClass implements Interface1, Interface2, Interface3

Page 48: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-48

Interfaces in UML

GradedActivity

RelatableFinalExam3

A dashed line with an arrow indicates implementation of an interface.

Page 49: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-49

Polymorphism with InterfacesJava allows you to create reference variables of

an interface type.An interface reference variable can reference

any object that implements that interface, regardless of its class type.

This is another example of polymorphism.Example:

RetailItem.javaCompactDisc.javaDvdMovie.javaPolymorphicInterfaceDemo.java

Page 50: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-50

Polymorphism with InterfacesIn the example code, two RetailItem reference

variables, item1 and item2, are declared.The item1 variable references a CompactDisc

object and the item2 variable references a DvdMovie object.

When a class implements an interface, an inheritance relationship known as interface inheritance is established.a CompactDisc object is a RetailItem, anda DvdMovie object is a RetailItem.

Page 51: Chapter Outline What inheritance is Calling the superclass constructor Overriding superclass methods Protected members Chains of inheritance The Object

11-51

Polymorphism with InterfacesA reference to an interface can point to any class

that implements that interface.You cannot create an instance of an interface.

RetailItem item = new RetailItem(); // ERROR!

When an interface variable references an object:only the methods declared in the interface are available,explicit type casting is required to access the other

methods of an object referenced by an interface reference.