public class TestVariable {
public static void main(String[] args) {
Base b = new Sub();
b.display();
}
}
class Base {
int a = 1;
public void display() {
System.out.println(this.a);
}
}
class Sub extends Base {
int a = 2;
// 如果注释屌 Sub 中的 display ,b.display()打印 1 ,否则打印 2 ,为什么?
public void display() {
System.out.println(this.a);
}
}
1
n2l OP no body?
|
2
yunhe8752 2023-11-13 11:42:28 +08:00
你 new 的是 sub ,那么你调用的对象就是 sub ,并且 sub 内的对象 this ,就是你调用的对象哇。
|
3
n2l OP @yunhe8752 所以,如果注释屌 Sub 中的 display ,b.display()打印 1 ,否则打印 2 ,为什么?
|
4
zsdroid 2023-11-16 16:14:17 +08:00
因为继承啊,不懂你想问什么?对继承的概念不理解?
|
5
n2l OP @zsdroid 子类实例赋值给父类变量,父类中有个调用 int a 的 public display 方法,调用方式是 this.a ,如果子类中有一个同名 int a ,且没有重写 display 方法,那父类变量调用 display 方法后为什么返回父类中的 int a ,而不是子类中 int a ,我知道成员没有多态性,但是因为 display 方法内的调用方式是 this.a ,this 指的是实例对象即子类对象,那 this.a 为啥还是返回父类中的 int a ?仅仅凭着“成员变量没有多态”来解释这一切,感觉还是有点单薄啊
|