// Java Scope Rules: // subclass methods over-ride superclass methods, // but subclass member vars do not over-ride superclass member vars. class Test { public static void main(String argv[]) // i.e. a stand-alone `application'. { SuperClass superObj = new SuperClass(); SubClass subObj = new SubClass(); show(superObj, subObj); System.out.println(); show(subObj, subObj); // NB. *** 1st as superClass, 2nd as subClass *** }//main(...) private static void show(SuperClass supObj, SubClass subObj) { System.out.println("1. supObj.memberVar: " + supObj.memberVar); System.out.println(" supObj.staticVar: " + supObj.staticVar); System.out.println(" supObj.method(): " + supObj.method()); System.out.println(" supObj.method2(): " + supObj.method2()); System.out.println("2. subObj.memberVar: " + subObj.memberVar); System.out.println(" subObj.staticVar: " + subObj.staticVar); System.out.println(" subObj.method(): " + subObj.method()); System.out.println(" subObj.method2(): " + subObj.method2()); }//show(...) }//Test // L.Allison, Computer Science and Software Engineering, Monash University. // Thanks to Bart Demoen. class SuperClass // extended by subClass { public SuperClass() { } public String memberVar="memberVar from SuperClass"; public static String staticVar="staticVar from SuperClass"; public String method() { return "method( ) from SuperClass"; } public String method2() { return memberVar + ", " + staticVar + ", " + method(); /*try the lot*/ } }//SuperClass class SubClass extends SuperClass { public SubClass() { } public String memberVar="memberVar from SubClass"; public static String staticVar="staticVar from SubClass"; public String method() { return "method( ) from SubClass"; } }//SubClass