CIS 35A: Introduction to Java Programming

Home | Green Sheet | Lectures | Assignments | FAQ | Grades

Inheritance

Inheritance
Basic skills
Polymorphism

Java allows us to treat an object of a subclass as an object of its superclass. In other words, a reference variable of a superclass type can point to an object of its subclass.

How polymorphism works

  • Polymorphism is a feature of inheritance that lets you treat objects of different subclasses that are derived from the same superclass as if they had the type of the superclass.
  • Example: If Book is a subclass of Product, you can treat a Book object as if it were a Product object.

  • If you access a method of a superclass object and the method is overridden in the subclasses of that class, polymorphism determines which method is executed based on the object's type.
  • Example: If you call the toString method of a Product object, the toString method of the Book class is executed if the object is a Book object.

Polymorphism: 3 versions of the toString method

The toString method in the Product superclass

public String toString()
{
    return "Code:        " + code + "\n" +
           "Description: " + description + "\n" +
           "Price:       " + this.getFormattedPrice() + "\n";
}

The toString method in the Book subclass

public String toString()
{
    return super.toString() +
        "Author:      " + author + "\n";
}

The toString method in the Software subclass

public String toString()
{
    return super.toString() +
        "Version:     " + version + "\n";
}

Polymorphism: Code that uses the overridden methods

Book b = new Book();
b.setCode("java");
b.setDescription("Murach's Beginning Java 2");
b.setPrice(49.50);
b.setAuthor("Steelman");

Software s = new Software();
s.setCode("txtp");
s.setDescription("TextPad");
s.setPrice(27.00);
s.setVersion("4.7.3");

Product p;
p = b;
System.out.println(p.toString()); // calls toString from the Book class
p = s;
System.out.println(p.toString()); // calls toString from the Software class

Previous | Superclass | Subclass | Overriding methods in the Superclass | Polymorphism | Next