2018年1月21日
本期题目
(单选题)下列选项中哪一个是正确的?
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();
}
}
问这个程序的输出结果。
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()调用就可以了。
所以参考答案是 (D)