180 likes | 305 Views
CSCI 143 OOP – Inheritance. What is Inheritance?. A form of software reuse Create a new class from an existing class Absorb existing class data and methods Enhance with new or modified capabilities Used to eliminate redundant code Example Dog class inherits from Animal class
E N D
What is Inheritance? • A form of software reuse • Create a new class from an existing class • Absorb existing class data and methods • Enhance with new or modified capabilities • Used to eliminate redundant code • Example • Dog class inherits from Animal class • Dog extends Animal
Subclass and Superclass • Subclass extends superclass • Subclass • Also called child class or derived class • More specialized group of objects • Inherits data and methods from superclass • Can add or modify methods • Modifying methods is called overriding • Superclass • Also called parent class or base class • Typically represents larger group of objects • Supplies data and behaviors to subclass • May be direct or indirect • Java does not support multiple inheritance
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()
“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
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;}
Inheritance • Dog extends (“is-a”) Animal Animal Animal’s Stuff Dog Animal’s Stuff Dog’s Stuff
This is an overridden method, Inherited from animal. public class Animal{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String talk() { return “?”; }} public class Dog extends Animal { public String talk() { return "WOOF!"; } public void fetch(String toy) { System.out.println(“Fetching a ” + toy); } } This is a new method.
public class PetStore { public static void main (String[] args) { Dog d = new Dog(); d.setName(“Henry”); System.out.println (d.getName() + " says " + d.talk()); } } Henry says WOOF!
CommunityMember Employee Student Alumnus Faculty Staff Administrator Teacher An Inheritance (Class) Hierarchy Fig. 9.2 Inheritance hierarchy for university CommunityMembers.
Draw an Inheritance Hierarchy for these classes: TriangleSphere 2DShape ShapePyramidSquare3DShapeCubeCircle
Create an inheritance hierarchy… • Automobile • Plant • Bird • ???
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
protected Members • Intermediate level of protection between public and private • Accessible to • superclasses • subclasses • classes 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
protected Members Poodle dog.m1()dog.m3() Dog public m1()private m2()protected m3() Owner dog.m1() is-a has-a
Constructors in Subclasses • Constructors are not inherited! • Chain of constructor calls • subclass 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 • All instance variables are inherited • Private variables not directly accessible
Quiz Private/Static/Constructor • _________ 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 within an inheritance hierarchy and its package is a____________. Object extends cannot protected member