关于Java多态引用和this的问题,希望大家能帮我解答一下,困扰好久了
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呢。
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呢。
...全文
相关推荐
java继承与多态
通过继承,可以实现代码的复用;而多态则使得程序更灵活、更具扩展性。掌握这两个概念对于深入学习Java编程至关重要。希望本文能够帮助读者更好地理解和运用这些概念。
java 多态实例代码
我们希望这篇文章能够帮助大家更好地理解 Java 多态实例代码的概念和应用。
java多态性练习
这个练习对于任何希望提升Java编程技能的人来说都是宝贵的资源。
java 中继承和多态详细介绍
感谢阅读,希望本文能帮助你深入理解Java中的继承和多态。
Java面向对象程序设计多态性示例
操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》希望本文所述对大家java程序设计有所帮助。


Java SE
