@(跃迁之路)专栏code
- 技术的精进不能只是简单的刷题,而应该是不断的“刻意”练习
- 该系列改版后正式归入【跃迁之路】专栏,持续更新
package Wangyi; class Base { public void method() { System.out.println("Base"); } } class Son extends Base { public void method() { System.out.println("Son"); } public void methodB() { System.out.println("SonB"); } } public class Test01 { public static void main(String[] args) { Base base = new Son(); base.method(); base.methodB(); } }
问这个程序的输出结果。对象
正确答案: D 你的答案: B (错误)
A Base SonB
B Son SonB
C Base Son SonB
D 编译不经过编译
Base base=new Son(); 是多态的表示形式。父类对象调用了子类建立了Son对象。 base调用的method()方法就是调用了子类重写的method()方法。 而此时base仍是属于Base对象,base调用methodB()时Base对象里没有这个方法,因此编译不经过。 要想调用的话须要先经过SON son=(SON)base;强制转换,而后用son.methodB()调用就能够了。