// Program to test data member shadowing - with polymorphism // Jim Henry 03/04/05 public class TestDataMemberHide { Animal an; Mammal mam; Animal poly; //----------------------------------------------- public static void main(String[] args) { TestDataMemberHide me; me = new TestDataMemberHide(); } //----------------------------------------------- public TestDataMemberHide() { an = new Animal(); mam = new Mammal(); poly = new Mammal(); System.out.println("The Animal, an, via inherited get() methods:"); System.out.println("private animal: " + an.getPrivVal()); // 5 System.out.println("protected animal: " + an.getProtVal()); // 6 System.out.println("PUBLIC animal: " + an.pubVal); // 7 System.out.println(""); System.out.println("the Mammal, mam, via inherited get() methods:"); System.out.println("private mammal: " + mam.getPrivVal()); // 5 System.out.println("protected mammal: " + mam.getProtVal()); // 6 System.out.println("PUBLIC mammal: " + mam.pubVal); // 12 System.out.println(""); System.out.println("Via toString()"); System.out.println("an: " + an.toString()); // 5 6 7 System.out.println("mam: " + mam.toString()); // 10 11 12 System.out.println("poly: " + poly.toString()); // 10 11 12 } //*********************************************** class Animal { private int privVal; protected int protVal; public int pubVal; //----------------------------------------------- public Animal() { privVal = 5; protVal = 6; pubVal = 7; } //----------------------------------------------- public int getPrivVal() { return privVal; } //----------------------------------------------- public int getProtVal() { return protVal; } //----------------------------------------------- public String toString() { return "Animal: Private value: " + privVal + " Protected value: " + protVal + " Public value: " + pubVal; } } //*********************************************** class Mammal extends Animal { private int privVal; protected int protVal; public int pubVal; //----------------------------------------------- public Mammal() { privVal = 10; protVal = 11; pubVal = 12; } //----------------------------------------------- // If not provided here, called will get Animal's toString() and will see // Animal's data member values. public String toString() { return "Mammal: Private value: " + privVal + " Protected value: " + protVal + " Public value: " + pubVal; } } }