Java多态问题求助:父类引用指向子类对象调用方法的输出
Java多态场景下的方法调用结果解析
嗨,同学!先直接给你答案:执行那段代码后,输出结果是Two,对应可选答案里的第三个选项。
先把你的代码再贴一遍方便分析:
public class One { public void display() { System.out.print ("One"); } } public class Two extends One { public void display () { System.out.print("Two"); } }
你要执行的代码段是:
One object1= new Two(); object1.display();
这里核心要理解Java的多态和动态绑定机制:
One object1 = new Two();这行是父类类型的引用指向子类对象。编译的时候,object1的类型被标记为One,但它实际在内存里创建的是Two类的对象——就像你用一个装水果的盒子(父类引用)装了一个苹果(子类对象)。- 当调用
object1.display()时,Java不会只看引用的类型,而是会去检查这个引用实际指向的对象是什么类型。因为Two类重写了One类的display()方法,所以Java会动态调用子类Two里的display()实现,自然就输出"Two"了。
简单总结:父类引用指向子类对象时,调用被重写的方法,执行的是子类的版本——这就是多态最常用的场景之一。
内容的提问来源于stack exchange,提问作者i suck at coding
相关产品推荐
相关产品推荐

