go to previous page   go to home page   go to next page hear noise highlighting

Answer:

Yes.


Using a Super Class's Constructor

class Video
{
  private String  title;    // name of the item
  private int     length;   // number of minutes
  private boolean avail;    // is the video in the store?

  // constructor
  public Video( String ttl )
  {
    title = ttl; length = 90; avail = true; 
  }

  // constructor
  public Video( String ttl, int lngth )
  {
    title = ttl; length = lngth; avail = true; 
  }
  . . . 

}


class Movie extends Video
{
  private String  director;     // name of the director
  private String  rating;       // G, PG, R, or X

  // constructor
  public Movie( String ttl, int lngth, String dir, String rtng )
  {
    super(ttl, lngth);         // use the base class's constructor to initialize members inherited from it
    director = dir;            // initialize the members new to Movie
    rating = rtng;  
  }
  . . .
}

Look at the constructor for class Movie. The class definition for Video has a constructor that initializes the instance variables of Video objects. The class Movie has a constructor that initializes the instance variables of Movie objects.

The statement super(ttl, lngth) invokes a constructor of the parent to initialize some variables of the child. There are two constructors in the parent. The one that is invoked is the one that matches the argument list in super(ttl, lngth). The next two statements initialize variables that only Movie has.

Important Note: super() must be the first statement in the subclass's constructor.

This fact is often overlooked and may cause mysterious compiler error messages.


member where defined how initialized
title inherited from Video super(ttl, lngth);
length inherited from Video super(ttl, lngth);
avail inherited from Video super(ttl, lngth);
directordefined in Movie director = dir;
rating defined in Movie rating = rtng;

QUESTION 11:

Why is the statement that invokes the parent's constructor called super()?


go to previous page   go to home page   go to next page