Instance Variables - Shadowing and Super Class References
public class DemoInheritance
{
// Instance variables can be "shadowed" (i.e., an instance variable in a superclass
// can get hidden behind a similarly named instance variable in a subclass)
// You can reference a shadowed variable directly
public static void main(String args[])
{
C cref = new C();
System.out.println("Values: " + cref.ic);
System.out.println("Values: " + cref.ia);
B b2 = cref;
System.out.println("Values: " + b2.ic);
System.out.println("Casting: " + ((B) cref).ic );
}
}
class A
{
int ia = 1;
int ic = 300;
}
class B extends A
{
int ib = 2;
int ic = 30;
}
class C extends B
{
int ic = 3;
}
Instance Methods
public class DemoInheritance
{
// Giving an improved version of a method is a subclass is
// called "overriding".
// Even if you try to execute a super class' version of a method,
// the subclass version will be executed (polymorphism).
public static void main(String args[])
{
System.out.println("Starting App");
A aref = new A();
C cref = new C();
aref.ma();
cref.mc();
cref.mb();
cref.ma();
System.out.println("------------------");
aref.mc();
cref.mc();
System.out.println("*******************");
A a2 = cref;
a2.mc();
}
}
class A
{
void ma()
{
System.out.println("In A object");
}
void mc()
{
System.out.println("mc method in A");
}
}
class B extends A
{
void mb()
{
System.out.println("In B object");
}
void mc()
{
System.out.println("mc method in B");
}
}
class C extends B
{
void mc()
{
System.out.println("In C object");
}
}
|