/home/wpollock1/public_html/Java/C3.java
// Demo of Shadowing. In Java a class or instance variable in one class
// can "hide" or "shadow" one in a child or subclass. The keywords
// "this" and "super" can be used to distinguish between local variables,
// class or instance variables, and variables that were inherited.
//
// Note that unlike with instance methods there is no polymorphism for
// variables, so the final printout is "c1.i = 1" and not "c1.i = 3".
//
// Written 3/2003 by Wayne Pollock, Tampa Florida USA.
class C1
{
int i = 1;
}
class C2 extends C1
{
int i = 2;
}
class C3 extends C2
{
int i = 3;
public void someMethod ( )
{
int i = 4;
System.out.println( "i = " + i );
System.out.println( "this.i = " + this.i );
System.out.println( "super.i = " + super.i );
// System.out.println( "super.super.i = " + super.super.i ); // No good!
C1 c1 = new C3();
System.out.println( "c1.i = " + c1.i ); // No polymorphism!
}
public static void main (String [] args )
{
C3 foo = new C3();
foo.someMethod();
}
}