【躍遷之路】【436天】刻意練習系列195—Java基礎練習(繼承)(2018.04.17)

@(躍遷之路)專欄code

叨叨兩句

  1. 技術的精進不能只是簡單的刷題,而應該是不斷的「刻意」練習
  2. 該系列改版後正式歸入【躍遷之路】專欄,持續更新

1

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()調用就能夠了。
相關文章
相關標籤/搜索