Inheritance
is one of the most important feature of Object Oriented Programming.
Inheritance means to take something that is already made. It is the concept
that is used for reusability purpose. Inheritance is the mechanism through
which we can derive classes from other classes. The derived class is called as
child class or the subclass or we can say the extended class and the
class from which we are deriving the subclass is called the base class or the
parent class. The concept of inheritance is used to make the things from
general to more specific The following kinds of inheritance are there in java.
- Simple Inheritance
- Multilevel Inheritance
To inherit a class, you simply incorporate the definition of one
class into another by using the extends keyword. To see how, let’s begin
with a short example. The following program creates a superclass called A and
a subclass called B. Notice how the keyword extends is used to
create a subclass of A.
//
A simple example of inheritance.
//
Create a superclass.
class
A
{
int
i, j;
void
showij()
{
System.out.println("i
and j: " + i + " " + j);
}
}
//
Create a subclass by extending class A.
class
B extends A
{
int
k;
void
showk()
{
System.out.println("k:
" + k);
}
void
sum()
{
System.out.println("i+j+k:
" + (i+j+k));
}
}
class
SimpleInheritance
{
public
static void main(String args[] )
{
A
superOb = new A();
B
subOb = new B();
//
The superclass may be used by itself.
superOb.i
= 10;
superOb.j
= 20;
System.out.println("Contents
of superOb: ");
superOb.showij();
System.out.println();
/*
The subclass has access to all public members of
its
superclass. */
subOb.i
= 7;
subOb.j
= 8;
subOb.k
= 9;
System.out.println("Contents
of subOb: ");
subOb.showij();
subOb.showk();
System.out.println();
System.out.println("Sum
of i, j and k in subOb:");
subOb.sum();
}
}
|
The
output from this program is shown here:
Contents
of superOb:
i
and j: 10 20
Contents
of subOb:
i
and j: 7 8
k:
9
Sum
of i, j and k in subOb:
i+j+k:
24
As
you can see, the subclass B includes all of the members of its
superclass, A. This is why subOb can access i and j and
call showij( ). Also, inside sum( ), i and j can be
referred to directly, as if they were part of B. Even though A is
a superclass for B, it is also a completely independent, stand-alone
class. Being a superclass for a subclass does not mean that the superclass
cannot be used by itself. Further, a subclass can be a superclass for another
subclass.
The
general form of a class declaration that inherits a superclass is shown
here:
class
subclass-name extends superclass-name {
//
body of class
}
You can only specify one superclass for any subclass that you create. Java does not support the inheritance of multiple superclasses into a single subclass. You can, as stated, create a hierarchy of inheritance in which a subclass becomes a superclass of another subclass. However, no class can be a superclass of itself.
Member
Access and Inheritance
Although
a subclass includes all of the members of its superclass, it cannot access
those members of the superclass that have been declared as private. For example,
consider the following simple class hierarchy:
/* In a class hierarchy, private members remain
private to their class.
This program contains an error and will not
compile.
*/
// Create a superclass.
class A
{
int i; // public by default
private int j; // private to A
void setij(int x, int y)
{
i = x;
j = y;
}
}
// A's j is not accessible here.
class B extends A
{
int total;
void sum()
{
total = i + j; // ERROR, j is not accessible here
}
}
class Access
{
public static void main(String args[])
{
B subOb = new B();
subOb.setij(10, 12);
subOb.sum();
System.out.println("Total is " + subOb.total);
}
}
|
This program will not compile because the reference to j inside the sum( ) method of B causes an
access violation. Since j is declared as private, it is only accessible by other
members
of
its own class. Subclasses have no access to it.
Within
Using the Keyword super
Accessing
Superclass Members
If your method
overrides one of its superclass's methods, you can invoke the overridden method
through the use of the keyword
Consider this class, super. You can also use super to refer to a hidden field. More Elaborately we can say it is used to
access members of a class inherited by the class in which it appears. Allows a
subclass to access overridden methods and hidden members of its superclass. The
super
keyword is also used to forward a call from a constructor to a constructor in
the superclass. Superclass:| public class Superclass { public void printMethod() { System.out.println("Printed in Superclass."); } } Here is a subclass, called Subclass,
that overrides printMethod():public class Subclass extends Superclass { // overrides printMethod in Superclass public void printMethod() { super.printMethod(); System.out.println("Printed in Subclass"); } public static void main(String[] args) { Subclass s = new Subclass(); s.printMethod(); } } |
Subclass,
the simple name printMethod()
refers to the one declared in Subclass,which overrides the one in Superclass. So, to refer to printMethod() inherited from Superclass, Subclass must use a qualified name, using super as shown. Compiling and executing Subclass prints the following:Printed in Superclass.
Printed in Subclass
No comments:
Post a Comment