Excuse me for my ignorance. The following code outputs
A1 has name A1
B1 has name A1
But I am expecting
A1 has name A1
B1 has name B1
as String name is redefined in the sub-class. Can anyone explain?
Code Snippet:
public class Client {
public static void main(String[] args) {
A1 a = new A1();
A1 b = new B1();
System.out.println(a.greeting() + " has name " + a.getName());
System.out.println(b.greeting() + " has name " + b.getName());
}
}
class A1 {
String name = "A1";
String getName() {
return name;
}
String greeting() {
return "class A1";
}
}
class B1 extends A1 {
String name = "B1";
String greeting() {
return "class B1";
}
}