有两个类:A和B
class A {
String name = "a";
String getName() {
return this.name;
}
}
class B extends A {
String name = "b";
String getName() {
return this.name;
}
}
public static void main(String[] args) {
A a = new B();
System.out.println(a.name);
System.out.println(a.getName());
}
请问程序输出的值是什么?
这道题主要是考类的成员变量和成员方法的多态特性。
答案是:
a
b
在Java里,成员变量没有多态,不可以被覆盖。a.name实际调用的是类型A的属性name。
而成员方法是会被覆盖,a.getName()调用的是实例B里的方法getName()。