1 what is inheritance? a form of software reuse create new class from existing class absorb existing...
TRANSCRIPT
1
What is Inheritance?
A form of software reuse
Create new class from existing classAbsorb existing class’ data and behaviors
Enhance with new or modified capabilities
Used to eliminate redundant code
ExampleCircle class inherits from Shape class
Circle extends Shape
2
Subclass and Superclass
Subclass extends superclassSubclass
– Also called child class or derived class
– More specialized group of objects
– Inherits data and behaviors from superclass
– Can add or modify behaviors (methods)
Superclass – Also called parent class or base class
– Typically represents larger group of objects
– Supplies data and behaviors to subclass
– Direct and indirect
Single and multiple inheritance
3
The Object class
Top of the Java class hierarchy
Located in package java.lang
Class from which every other Java class inherits
A class implicitly extends Object if no other class is specified
.toString(), .clone(), .equals()equals() compares addresses, not the contents of objects
4
“is-a” vs. “has-a” relationships“is-a”
Represents inheritance
subclass object is an example of the superclass object
Example: a Car is a Vehicle
Car is subclass; Vehicle is superclass
Keywords: extends, implements
“has-a”Represents composition
Object contains one or more objects of other classes as members
Example: Car has a Steering Wheel
5
Composition
Dog “has-a” owner, mother, father, leash…
public class Dog{ private String name; private int age; private Person owner; private Dog mother, father; private Leash dogLeash;}
6
Inheritance
Animal’s Stuff
Animal’s Stuff
Dog’s Stuff
Animal
Dog
Dog extends (“is-a”) Animal
7
public class Animal{ private int numLegs;
public int getLegs() { return numLegs; }
public void setLegs(int legs) { numLegs = legs; }
public String noise() { return “?”; }}
public class Dog extends Animal{ public static void main (String[] args) { Dog d = new Dog(); d.setLegs(4); System.out.println ("A dog has "
+ d.getLegs() + " legs"); System.out.println ("A dog says "
+ d.noise()); }
public String noise() { return "WOOF!"; }}
8
Inheritance Examples
Superclass Subclasses Student GraduateStudent,
UndergraduateStudent Shape Circle, Triangle, Rectangle Loan CarLoan, HomeImprovementLoan,
MortgageLoan Employee Faculty, Staff BankAccount CheckingAccount,
SavingsAccount Fig. 9.1 Inheritance examples.
9
Fig. 9.2 Inheritance hierarchy for university CommunityMembers.
CommunityMember
Employee Student
StaffFaculty
Administrator Teacher
Alumnus
An Inheritance (Class) Hierarchy
10
Draw an Inheritance Hierarchy for these classes: Triangle
Sphere TwoDimensionalShape ShapePyramidSquareThreeDimensionalShapeCubeCircleSphere
Shape
TwoDimensionalShape ThreeDimensionalShape
Circle Square Triangle Sphere Cube Pyramid
11
Try one more! WalkingBirdOwlOstrichParrotBirdFlyingBirdChickenTalkingParrot
Bird
WalkingBird FlyingBird
Ostrich Chicken Parrot Owl
TalkingParrot
12
Strategy
Design classes for objects
Identify characteristics classes have in common
Abstraction: focus on commonalities among objects in a system
Design superclasses to store common characteristics
Bird
call: ?color:?food:?movement:?
WalkingBird
call: ?color:?food:?movement:walk
FlyingBird
call: ?color:?food:?movement:fly
Chicken
call: cluckcolor: whitefood: bugs
Ostrich
call: neek-neekcolor: brownfood: grass
Parrot
call: Squawkcolor:?food: fruit
Owl
call: hoocolor: brownfood:mice
TalkingParrot. . .
14
protected Members
Variables or methods available only to derived classesIntermediate level of protection between public and privateAccessible to
superclass memberssubclass membersclass members in the same package
Use super. to access a superclass method that has been overridden by a subclass method.Don’t use protected instance variables!
“Fragile” software can “break” if superclass changes
15
protected Members
ClassA
public m1()private m2()protected m3()
ClassB
ClassA.m1()
ClassC
ClassA.m1()ClassA.m3()
is-a has-a
16
Constructors in Subclasses
Constructors are not inherited!
Chain of constructor callssubclass constructor invokes superclass constructor
– Implicitly or explicitly– To call explicitly, use super()– Superclass constructor call must be first
statement in subclass constructor
Object constructor is always fired last
Example: Student extends Person
17
Software Engineering with Inheritance
Customizing existing softwareInherit from existing classes
Include additional members
Redefine superclass members
No direct access to superclass source code
Independent software vendors (ISVs)Develop proprietary code for sale/license
Users derive new classes – Without accessing ISV proprietary source code
18
Quiz
_________ methods are not inherited.
The _____ class is at the top of the Java hierarchy.
The _____ keyword is used in Java to represent inheritance.
A Java class _____ inherit from more than one class.
A variable or method that is available only to derived classes is called a____________.
Private/Static/Constructor
Object
extends
cannot
protected member