object inheritance lecturer: kalamullah ramli electrical engineering dept. university of indonesia...

20
Object Inheritance Object Inheritance Lecturer: Lecturer: Kalamullah Ramli Kalamullah Ramli Electrical Engineering Dept. Electrical Engineering Dept. University of Indonesia University of Indonesia Session- Session- 4 4

Upload: rosanna-lawson

Post on 19-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Object InheritanceObject Inheritance

Lecturer: Lecturer: Kalamullah RamliKalamullah Ramli

Electrical Engineering Dept.Electrical Engineering Dept.University of IndonesiaUniversity of Indonesia

Session-4Session-4

Page 2: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 22OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Extending classes & inheriting Extending classes & inheriting fields/methodsfields/methods Using this and super Constructor chaining Single and multiple inheritance

Class Extension and Inheritance

Page 3: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 33OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Inheritance: Natural, Hierarchical Way of Organizing Things

Staff Member

Employee Volunteer

Hourly Salaried

Consultant

Think in terms of “is a” relationships:An Employee is a Staff Member, An Hourly worker is a Employee.A Consultant is a(n) Hourly employee.

(subclass of Hourly)

(subclass of Employee)

(subclass of Staff)

(superclass)

Page 4: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 44OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

class Animal { protected String strName = “”; protected String strNoise = “”; protected int iNumTimesPerformed = 0; // constructors, accessors & modifiers go here public void identifySelf( ) { System.out.println(“My name is “ + strName); } // of identifySelf public void perform ( ) { doYourThing( ); iNumTimesPerformed++; } // of perform public void doYourThing( ) { ; // ‘no-op’ method } // of doYourThing

} // of Animal

Example

Inheritance: SampleInheritance: Sample [1/4][1/4]

Page 5: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 55OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Subclasses(Dog extends Animal

i.e. “A dog is an animal” or“All dogs are animals”)

class Dog extends Animal { public Dog() { strNoise = “Woof”; } // of constructor

public void doYourThing ( ) { identifySelf(); System.out.println(“I am a dog”); System.out.println(strNoise); } // of doYourThing

} // of Dog

Recall: The Animal class had a no-op method for doYourThing()

Animal

Dog Cat Human

Inheritance: SampleInheritance: Sample [2/4][2/4]

Page 6: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 66OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Subclasses(Cat extends Animal

i.e. “A cat is an animal” or“All cats are animals”)

class Cat extends Animal { public Cat() { strNoise = “Miaow”; } // of constructor

public void doYourThing ( ) { identifySelf(); System.out.println(“I am a cat”); System.out.println(strNoise); } // of doYourThing

} // of Cat

Animal

Dog Cat Human

Inheritance: SampleInheritance: Sample [3/4][3/4]

Page 7: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 77OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Inheritance: SampleInheritance: Sample [4/4][4/4]

Dog pickles = new Dog();pickles.setName(“Pickles”);pickles.doYourThing();// output:// “My name is Pickles”// “I am a dog”// “Woof”

Cat abby = new Cat();abby.setName(“Abby”);abby.doYourThing();// output:// “My name is Abby”// “I am a cat”// “Miaow”

Page 8: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 88OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Inheritance and Hierarchy

Variables (e.g. strNoise):• Java first examines current method, looks for local variable or parameter;• Java then examines current class (e.g. Dog);• Java then examines superclass (e.g. Animal); • Java continues up the class hierarchy until no more superclasses to examine.

Methods (e.g. doYourThing() or identifySelf()):• Java first examines current class;• Java then examines superclass;• Java continues up inheritance hierarchy until no more superclasses to examine.

Page 9: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 99OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Specifying ScopeSpecifying Scope [1/2][1/2]

Java allows you to override the scope rules by saying which variable/method you’re referring to:

Keyword super:keyword for specifying method or variable from superclass, e.g., super.doYourThing( )

Keyword this:keyword for specifying method or variable in current object, e.g., this.doYourThing( )

Page 10: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1010OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

class Dog extends Animal { public Dog() { super.strNoise = “Woof”; } // of constructor

public void doYourThing ( ) { super.identifySelf(); System.out.println(“I am a dog”); System.out.println(strNoise); } // of doYourThing

} // of Dog

Same (in this case) asstrNoise = “Woof”;andthis.strNoise = “Woof”;

Same (in this case) asidentifySelf();orthis.identifySelf();

Specifying ScopeSpecifying Scope [2/2] [2/2]

Page 11: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1111OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Using Super

class Dog extends Animal { // constructor as before

public void doYourThing() {identifySelf();System.out.println(strNoise);

} // of doYourThing

public void identifySelf() { super.identifySelf();

System.out.println(“I am a dog”); } // of identifySelf

} // of Dog

Animal

Dog Cat

I.e.this.identifySelf()(newly defined below)

I.e. theidentifySelf()(defined in Animal)

Page 12: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1212OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

class Shape {

public final double PI = 3.14159; protected String name; public String getName () { return (this.name); } // getName

public int area () { return (0); } // area

} // Shape

A Geometry ExampleA Geometry Example [1/2][1/2]

Shape

CircleRectangle

Page 13: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1313OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

class Rectangle extends Shape { private int length, width; Rectangle () { this(0, 0); } // constructor

Rectangle (int l, int w) { this( l, w, “rectangle”); } // constructor

Rectangle (int l, int w, String n) { length = l; width = l; name = n; } // constructor

public int area () { return (length * width); } // area

public String getName () { if (length == width) return ("square"); else return (super.getName()); } // getName

public String toString () { String s; s = new String ("A " + getName() +

" with length " + length + " and width " + width);

return (s); } } // toString

} // Rectangle

A Geometry ExampleA Geometry Example [2/2][2/2]

Page 14: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1414OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Java’s rule:

• If first line of constructor is not an explicit call to a superclass constructor, Java will implicitly put super( ) as the first line, calling the superclass default constructor.

public Dog() { strNoise = “Woof”; } // of constructor

• An exception to this rule: chained constructor call tothis(params)

will defer super( ) call

• To use superclass constructors with params, call them explicitly, e.g., super(strName)

Constructors and Inheritance

implied call to Animal() here

Page 15: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1515OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Inheritance and Scoping Inheritance and Scoping [1/3][1/3]

Examples:super(xxx) // calls a superclass constructorsuper.xxx // accesses superclass’ variablesuper.xxx( ) // calls superclass’ method

this(xxx) // calls a current-class constructorthis.xxx // accesses current class’s variablethis.xxx( ) // calls current class’ method

Note: cannot do super.super<something>

(can achieve this effect via casting, but rarely should; details later...)

Page 16: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1616OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Inheritance and Scoping [2/3][2/3]

class StaffMember { String strName;

public StaffMember( ) { System.out.println (“in default StaffMem constr; No Name”); setName(“No Name”); } // of constructor

public StaffMember(String strName) { System.out.println (“in 2nd StaffMem constructior; have a Name”); setName(strName); } // of constructor

public void setName(String strName) { this.strName = strName; } // of setName

} // of StaffMember

Page 17: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1717OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

class Employee1 extends StaffMember { public Employee1(String strName) { setName(strName); } // of constructor } // of Employee1

What happens???

Inheritance and Scoping [3/3][3/3]

Note: Employee has no local setName() method

class Employee2 extends StaffMember { public Employee2(String strName) { setName(strName); } // of constructor

public void setName(String strName) { super.setName(strName); System.out.println (“Name set”); }} // of Employee2

Page 18: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1818OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Class Object

• Java provides a base class, Object

• All classes that do not have an extends clause implicitly inherit directly fromclass java.lang.Object

Examples:

public boolean equals (Object o)

public boolean String toString ()

• When you create your own toString( ) method for a class, you are overriding the toString( ) provided by Object.

Page 19: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 1919OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

Object HierarchyObject Hierarchy

Animal

Dog Cat

Object

Employee

Salaried Hourly

class Object methods: String toString() boolean equals(Object obj) and a few others...

Animal

Dog Cat Human?

Object

Employee

Salaried Hourly

Or how about...

Page 20: Object Inheritance Lecturer: Kalamullah Ramli Electrical Engineering Dept. University of Indonesia Session-4

Slide - Slide - 2020OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, OOP Lecture 2004 Dr. –Ing. Ir. Kalamullah Ramli, M.EngM.Eng

The EndThe End

QUESTIONS & QUESTIONS & COMMENTS ?COMMENTS ?