Java父類對象調用子類實體:方法重寫與動態調用

來源:互聯網
上載者:User

標籤:動態調用   handle   poi   ring   實現   定義   類的方法   轉型   賦值   

眾所周知Java的handle和C++的ponter而不是object對應,我們很熟悉C++的父類pointer調用子類實體的例子,那麼對於Java的handle是不是也可以這樣呢?

這裡我先給一個例子

class Father{    public void announce(){        System.out.println("Father");    }}class Child extends Father{    @Override    public void announce(){        System.out.println("Child");    }}public class Hello {    public static void main(String[] args){        System.out.println("Hello");        Father father=new Child();        father.announce();    }}

這段代碼中,我們把一個子類的對象賦值給了父類的控制代碼,之後調用已經被子類重載的方法,我們會得到的結果如下:

Hello
Child

我們可以看到,使用這個父類handle,我們調用的實際上是子類的announce方法。知道了這個特性簡直可以搞事。

這裡我們就要介紹一個概念:動態調用

動態連結是指,當一個方法僅在父類中實現而沒有在子類中實現是,我們調用父類中方法。而當一個方法在父類和子類中都進行了實現時,無論handle的類型,我們都會調用子類的方法。但這個方法必須是在父類中定義過的,否則則無法通過父類handle去調用。

另外需要注意的是Java中能夠自動向上轉型,即可以把子類對象賦值給父類handle<但是不能自動向下轉型,向下轉型的方法需要人工去定義。

Java父類對象調用子類實體:方法重寫與動態調用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.