0% found this document useful (0 votes)
36 views37 pages

Inheritance and Polymorphism: Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms

This document discusses inheritance and polymorphism in object-oriented programming. It defines inheritance as an "is-a" relationship between classes that allows code reuse and more intuitive design. Inheritance allows subclasses to extend existing classes, adding or overriding methods. Polymorphism allows treating objects of a subclass as the superclass type, with method execution determined at runtime based on the actual object type. The document provides examples of inheritance hierarchies and using inheritance to add and override methods while reusing functionality from the superclass.

Uploaded by

dheeraj bhatia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views37 pages

Inheritance and Polymorphism: Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms

This document discusses inheritance and polymorphism in object-oriented programming. It defines inheritance as an "is-a" relationship between classes that allows code reuse and more intuitive design. Inheritance allows subclasses to extend existing classes, adding or overriding methods. Polymorphism allows treating objects of a subclass as the superclass type, with method execution determined at runtime based on the actual object type. The document provides examples of inheritance hierarchies and using inheritance to add and override methods while reusing functionality from the superclass.

Uploaded by

dheeraj bhatia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 37

Inheritance and Polymorphism

Chris Kiekintveld
CS 2401 (Fall 2010)
Elementary Data Structures and Algorithms
Review: Classes
 User-defined data types
 Defined using the “class” keyword
 Each class has associated
 Data members (any object type)
 Methods that operate on the data
 New instances of the class are declared using the
“new” keyword
 “Static” members/methods have only one copy,
regardless of how many instances are created

Java Programming: Program Design Including Data Structures 2


Example: Shared Functionality
public class Student { public class Professor {
String name; String name;
char gender; char gender;
Date birthday; Date birthday;
Vector<Grade> grades; Vector<Paper> papers;

double getGPA() { int getCiteCount() {


… …
} }

int getAge(Date today) { int getAge(Date today) {


… …
} }
} }

Java Programming: Program Design Including Data Structures 3


public class Person {
String name;
char gender;
Date birthday;

int getAge(Date today) {



}
}

public class Student public class Professor


extends extends Person {
Person {
Vector<Paper> papers;
Vector<Grade> grades;
int getCiteCount() {
double getGPA() { …
… }
} }
}
Java Programming: Program Design Including Data Structures 4
Inheritance
 “is-a” relationship
 Single inheritance:
 Subclass is derived from one existing class
(superclass)
 Multiple inheritance:
 Subclass is derived from more than one superclass
 Not supported by Java
 A class can only extend the definition of one class

Java Programming: Program Design Including Data Structures 5


Inheritance (continued)

modifier(s) class ClassName extends ExistingClassName


modifier(s)
{
memberList
}

Java Programming: Program Design Including Data Structures 6


Inheritance:
class Circle Derived from
class Shape
public class Circle extends Shape
{
.
.
.
}

Java Programming: Program Design Including Data Structures 7


Inheritance
 Allow us to specify relationships between types
 Abstraction, generalization, specification
 The “is-a” relationship
 Examples?

 Why is this useful in programming?


 Allows for code reuse
 More intuitive/expressive code
Code Reuse
 General functionality can be written once and applied
to *any* subclass
 Subclasses can specialize by adding members and
methods, or overriding functions
Inheritance: Adding Functionality
 Subclasses have all of the data members and methods of
the superclass
 Subclasses can add to the superclass
 Additional data members
 Additional methods
 Subclasses are more specific and have more
functionality
 Superclasses capture generic functionality common
across many types of objects

Java Programming: Program Design Including Data Structures 10


public class Person {
String name;
char gender;
Date birthday;

int getAge(Date today) {



}
}

public class Student public class Professor


extends extends Person {
Person {
Vector<Paper> papers;
Vector<Grade> grades;
int getCiteCount() {
double getGPA() { …
… }
} }
}
Java Programming: Program Design Including Data Structures 11
Brainstorming
 What are some other examples of possible
inheritance hierarchies?
 Person -> student, faculty…
 Shape -> circle, triangle, rectangle…
 Other examples???

Java Programming: Program Design Including Data Structures 12


UML Diagram: Rectangle

What if we want to implement a 3d box object?

Java Programming: Program Design Including Data Structures 13


Objects myRectangle and
myBox
Rectangle myRectangle = new Rectangle(5, 3);
Box myBox = new Box(6, 5, 4);

Java Programming: Program Design Including Data Structures 14


UML Class Diagram: class Box

Both a Rectangle and a Box have a surface area,


but they are computed differently
Java Programming: Program Design Including Data Structures 15
Overriding Methods
 A subclass can override (redefine) the methods of the
superclass
 Objects of the subclass type will use the new method
 Objects of the superclass type will use the original

Java Programming: Program Design Including Data Structures 16


class Rectangle
public double area()
{
return getLength() * getWidth();
}

class Box
public double area()
{
return 2 * (getLength() * getWidth()
+ getLength() * height
+ getWidth() * height);
}

Java Programming: Program Design Including Data Structures 17


final Methods
 Can declare a method of a class final using the
keyword final

public final void doSomeThing()


{
//...
}

 If a method of a class is declared final, it cannot


be overridden with a new definition in a derived class

Java Programming: Program Design Including Data Structures 18


Calling methods of the superclass
 To write a method’s definition of a subclass, specify a
call to the public method of the superclass
 If subclass overrides public method of superclass,
specify call to public method of superclass:
super.MethodName(parameter list)
 If subclass does not override public method of
superclass, specify call to public method of superclass:
MethodName(parameter list)

Java Programming: Program Design Including Data Structures 19


class Box

public void setDimension(double l, double w, double h)


{
super.setDimension(l, w);
if (h >= 0)
height = h;
else
height = 0;
}}

Box overloads the method setDimension


(Different parameters)

Java Programming: Program Design Including Data Structures 20


Defining Constructors of the
Subclass
 Call to constructor of superclass:
 Must be first statement
 Specified by super parameter list

public Box()
{
super();
height = 0;
}

public Box(double l, double w, double h)


{
super(l, w);
height = h;
}
Java Programming: Program Design Including Data Structures 21
Access Control
 Access control keywords define which classes can
access classes, methods, and members

Modifier Class Package Subclass World


public Y Y Y Y
protected Y Y Y N
none Y Y N N
private Y N N N

Java Programming: Program Design Including Data Structures 22


Polymorphism
 Can treat an object of a subclass as an object of its
superclass
 A reference variable of a superclass type can point to an
object of its subclass

Person name, nameRef;


PartTimeEmployee employee, employeeRef;
name = new Person("John", "Blair");
employee = new PartTimeEmployee("Susan", "Johnson",
12.50, 45);
nameRef = employee;
System.out.println("nameRef: " + nameRef);

nameRef: Susan Johnson wages are: $562.5

Java Programming: Program Design Including Data Structures 23


Polymorphism
 Late binding or dynamic binding (run-time binding):
 Method to be executed is determined at execution
time, not compile time
 Polymorphism: to assign multiple meanings to the
same method name
 Implemented using late binding

Java Programming: Program Design Including Data Structures 24


Polymorphism (continued)
 The reference variable name or nameRef can point
to any object of the class Person or the class
PartTimeEmployee
 These reference variables have many forms, that is,
they are polymorphic reference variables
 They can refer to objects of their own class or to
objects of the classes inherited from their class

Java Programming: Program Design Including Data Structures 25


Polymorphism and References

Shape myShape = new Circle(); // allowed


Shape myShape2 = new Rectangle(); // allowed
Rectangle myRectangle = new Shame(); // NOT allowed

Java Programming: Program Design Including Data Structures 26


Polymorphism (continued)
 Can also declare a class final using the keyword
final
 If a class is declared final, then no other class
can be derived from this class
 Java does not use late binding for methods that are
private, marked final, or static
 Why not?

Java Programming: Program Design Including Data Structures 27


Casting
 You cannot automatically make reference variable of
subclass type point to object of its superclass
 Suppose that supRef is a reference variable of a
superclass type and supRef points to an object of its
subclass:
 Can use a cast operator on supRef and make a
reference variable of the subclass point to the object
 If supRef does not point to a subclass object and you
use a cast operator on supRef to make a reference
variable of the subclass point to the object, then Java
will throw a ClassCastException—indicating
that the class cast is not allowed

Java Programming: Program Design Including Data Structures 28


Polymorphism (continued)
 Operator instanceof: determines whether a
reference variable that points to an object is of a
particular class type
 This expression evaluates to true if p points to an
object of the class BoxShape; otherwise it
evaluates to false:
p instanceof BoxShape

Java Programming: Program Design Including Data Structures 29


Abstract Methods
 A method that has only the heading with no body
 Must be implemented in a subclass
 Must be declared abstract
public double abstract area();
public void abstract print();
public abstract object larger(object,
object);
void abstract insert(int insertItem);

Java Programming: Program Design Including Data Structures 30


Abstract Classes
 A class that is declared with the reserved word
abstract in its heading
 An abstract class can contain instance variables,
constructors, finalizers, and non-abstract methods
 An abstract class can contain abstract methods

Java Programming: Program Design Including Data Structures 31


Abstract Classes (continued)
 If a class contains an abstract method, the class must
be declared abstract
 You cannot instantiate an object of an abstract class
type; can only declare a reference variable of an
abstract class type
 You can instantiate an object of a subclass of an
abstract class, but only if the subclass gives the
definitions of all the abstract methods of the
superclass

Java Programming: Program Design Including Data Structures 32


Abstract Class Example
public abstract class AbstractClassExample
{
protected int x;
public void abstract print();

public void setX(int a)


{
x = a;
}

public AbstractClassExample()
{
x = 0;
}
}

Java Programming: Program Design Including Data Structures 33


Interfaces
 A class that contains only abstract methods and/or
named constants
 How Java implements multiple inheritance
 To be able to handle a variety of events, Java allows
a class to implement more than one interface

Java Programming: Program Design Including Data Structures 34


Composition
 Another way to relate two classes
 One or more members of a class are objects of
another class type
 “has-a” relation between classes
 For example, “every person has a date of birth”

Java Programming: Program Design Including Data Structures 35


Composition Example

Java Programming: Program Design Including Data Structures 36


Composition Example
(continued)

Java Programming: Program Design Including Data Structures 37

You might also like