Example 2
Home - About Us
Inheritance and References Example 1 Example 2 Exnample 3

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");
	}
}
Home - About Us
Copyright © 2006 by Kiowok, Ann Arbor, Michigan, USA