关于Java多态引用和this的问题,希望大家能帮我解答一下,困扰好久了

新垣结衣再优秀又怎么样还不是得不到我 新垣结衣再优秀又怎么样还不是得不到我 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public class Test {
public static void main(String[] args) {
A a = new B();
a.show();

}
}

class A {
int x = 50;

public void show() {
System.out.println(this.x);
}


}

class B extends A {
int y = 100;

@Override
public void show() {
this.y = 200;
this.showB();
System.out.println(this.y);
}

public void showB() {
System.out.println("我是子类的showB方法");
}
}

输出的结果就是
我是子类的showB方法
200

问题来了,a.show()此时a调用的是在子类中重写过的show方法。dan在类B里的show方法中,this表示调用此方法的对象,那么此时this是a,可是a此时是A类声明但指向B类,也就是转型,应该只保留父类A里的方法和属性才对,为什么此时还是输出子类B中独有的属性y和方法showB呢。
...全文
评论 8
收藏 已收藏
分享
返回顶部