圍觀某公司的Java面試題,多態方法調用

違反人類直覺,違反軟件開發初衷的Java面試題。



public class Super {
private int i=10;
public void execute(){
System.out.println(i);
}

public static void main(String[] args) {
Derived derived = new Derived();
Super superr = derived;
System.out.println("derived value:");
derived.execute();
System.out.println("super value:");
superr.execute();
}
}

public class Derived extends Super {
private int i=20;
}



要求寫出程序執行結果。

正確答案是
derived value:
10
super value:
10

但我當時寫的答案是20, 20。

題目是典型的鑽牛角尖。 我幹嘛要聲明一個子類的變量,然後又把它變成父類,又要調用父類的方法? 從來沒見過這麼搞的,就算實際中有,也是可讀性差、可維護性差的寫法,能做出這種題,只能說明是個應試型人才罷了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章