Usage of Super Key Word Forms of Inheritance
Usage of Super Key Word Forms of Inheritance
forms of inheritance
Usage of super key word
• There will be times when you will want to
create a superclass that keeps the details of its
implementation to itself (that is, that keeps its
data members private).
• In this case, there would be no way for a
subclass to directly access or initialize these
variables on its own.
• Since encapsulation is a primary attribute of
OOP, it is not surprising that Java provides a
solution to this problem
• Whenever a subclass needs to refer to its
immediate superclass, it can do so by use of
the keyword super.
Super has two general forms:
1. The first calls the superclass’
constructor.
2. The second is used to access a
member of the superclass that has
been hidden by a member of a
subclass.
• A subclass can call a constructor defined by its
superclass by use of the following form of
super:
super(arg-list);
• Here, arg-list specifies any arguments needed
by the constructor in the superclass.
• super( ) must always be the first statement
executed inside a subclass’ constructor.
LTC: Usage of super key word
// construct clone of an object
Box(Box ob) { // pass object to constructor
width = ob.width;
height = ob.height;
depth = ob.depth;
}
// constructor used when all dimensions
specified
Box(double w, double h, double d) {
width = w;
height = h;
depth = d;
}
// constructor used when no dimensions specified
Box() {
width = -1; // use -1 to indicate
height = -1; // an uninitialized
depth = -1; // box
}
// compute and return volume
double volume() {
return width * height * depth;
}
}
// BoxWeight now fully implements all
constructors.
class BoxWeight extends Box {
double weight; // weight of box
// construct clone of an object
BoxWeight(BoxWeight ob) { // pass object to
constructor
super(ob);
weight = ob.weight;
}
// constructor when all parameters are specified
BoxWeight(double w, double h, double d,
double m) {
super(w, h, d); // call superclass constructor
weight = m;
}
// default constructor
BoxWeight() {
super();
weight = -1;
}
class DemoSuper {
public static void main(String args[]) {
BoxWeight mybox1 = new BoxWeight(10, 20,
15, 34.3);
BoxWeight mybox3 = new BoxWeight(); //
default
BoxWeight myclone = new BoxWeight(mybox1);
double vol;
vol = mybox1.volume();
System.out.println("Volume of mybox1 is " +
vol);
System.out.println("Weight of mybox1 is " +
mybox1.weight);
vol = mybox3.volume();
System.out.println("Volume of mybox3 is " +
vol);
System.out.println("Weight of mybox3 is " +
mybox3.weight);
vol = myclone.volume();
System.out.println("Volume of myclone is " +
vol);
System.out.println("Weight of myclone is " +
myclone.weight);
}
}
This program generates the following output:
Volume of mybox1 is 3000.0
Weight of mybox1 is 34.3
Volume of mybox3 is -1.0
Weight of mybox3 is -1.0
Volume of myclone is 3000.0
Weight of myclone is 34.3
• Let’s review the key concepts behind super( ).
When a subclass calls super( ), it is calling the
constructor of its immediate superclass.
• Thus, super( ) always refers to the superclass
immediately above the calling class.
• This is true even in a multileveled hierarchy.
• Also, super( ) must always be the first
statement executed inside a subclass
constructor.
A Second Use for super
• The second form of super acts somewhat like
this, except that it always refers to the
superclass of the subclass in which it is used.
• This usage has the following general form:
super.member
• Here, member can be either a method or an
instance variable
• This second form of super is most applicable
to situations in which member names of a
subclass hide members by the same name in
the superclass.
Creating a Multilevel Hierarchy
• Up to this point, we have been using simple
class hierarchies that consist of only a
superclass and a subclass.
• However, you can build hierarchies that
contain as many layers of inheritance as you
like.
• It is perfectly acceptable to use a subclass as a
superclass of another.
• For example, given three classes called A, B,
and C, C can be a subclass of B, which is a
subclass of A.
• When this type of situation occurs, each
subclass inherits all of the traits found in all of
its superclasses.
• In this case, C inherits all aspects of B and A.
To see how a multilevel hierarchy can be useful,
consider the following program.
End of session