Introduction To Programming In Java/Inheritance

Syntax

In Java, the syntax for deriving a child class from a parent class is:

class subclass extends superclass
{
   // new characteristics of the subclass go here
}

Example

Here is a program that uses a class Video to represent movies available at a video rental store. The Video class has basic information in it, and would be OK for documentaries and instructional tapes. But movies need more information. An additional class, Movie, is created that is similar to Video, but has the name of the director and a rating.

class Video
{
  protected String  myTitle;     // name of the item
  protected int     myLength;    // number of minutes
  protected boolean myIsAvail;   // is the tape in the store?

  public Video(String title, int len)
  {
    myTitle = title; myLength = len ; myIsAvail = true; 
  }

  public String toString
  {
    return myTitle + ", " + myLength +
           " min. available: " + myIsAvail;
  }
}

class Movie extends Video
{
  protected String  myDirector;     // name of the director
  protected String  myRating;       // G, PG, R, or X

  // constructor
  public Movie(String title, int len, String dir, String rating)
  {
    // use the super class' constructor
    super(title, len);

    // initialize what's new to Movie
    myDirector = dir;  myRating = rating;
  }
}

class VideoStore
{

  public static void main (String args[])
  {
    Video item1 = new Video("Juiced on Java", 90 );
    Movie item2 = new Movie("Just Java", 120, "Gosling", "PG" );
    System.out.println(item1.toString);
    System.out.println(item2.toString);
  }

The class Movie is a derived class (subclass) of Video. An object of type Movie has the following members in it:

Members Where is it from?
MyTitle inherited from Video
myLength inherited from Video
myIsAvail inherited from Video
toString inherited from Video
myDirector defined in Movie
myRating defined in Movie

Both classes are defined: the Video class can be used to construct objects of that type, and now the Movie class can be used to construct objects of the Movie type.

The class definition for Video has a constructor that initializes the member data of Video objects. The class Movie has a constructor that initializes the data of Movie objects. The constructor for class Movie looks like this:

// constructor
public Movie(String title, int len, String dir, String rating)
{
  // use the super class' constructor
  super(title, len);

  // initialize what's new to Movie
  myDirector = dir;  myRating = rating;
}

The statement super(title, len) invokes the base class' constructor to initialize some of the data. Then the next two statements (on one line) initialize the members that only Movie has. When super is used in this way, it must be the first statement in the subclass' constructor.

4. It is not necessary to use super; the following would also work as a constructor for Movie:

// constructor
public Movie(String title, int len, String dir, String rating)
{
  // initialize the inherited members
  myTitle = title; myLength = len ; myIsAvail = true;

  // initialize members unique to Movie
  myDirector = dir;  myRating = rating;
}

In this constructor, each variable of the newly created Movie object is set to an initial value.


Project: Introduction to Programming in Java
Previous: Introduction to Programming in Java/Java Classes -- Introduction to Programming in Java/Inheritance -- Next: Introduction to Programming in Java/Arrays

  This article uses material from the Wikipedia page available here. It is released under the Creative Commons Attribution-Share-Alike License 3.0.


Introduction_to_Programming_in_Java/Inheritance
 

Manage research, learning and skills at IT1me. Create an account using LinkedIn to manage and organize your IT knowledge. IT1me works like a shopping cart for information -- helping you to save, discuss and share.


  Contact Us  |  About IT1me.com |  IT Training & References |  IT Careers |  IT Hardware |  IT Software |  IT Books