1. 程式人生 > >什麼是多型?實現多型的機制是什麼?

什麼是多型?實現多型的機制是什麼?

面試官:什麼是多型呢?
豬隊友:多種形態,氣體,液體,固體~
面試官:go out! now!


1870221-14f47f1b267d3ddd.png

到底什麼是多型呢?

官方說:

  • 介面的多種不同的實現方式即為多型。
  • 多型性是允許你將父物件設定成為一個或更多的他的子物件相等的技術。
  • 我們在程式中定義的引用變數所指向的具體型別和通過該引用變數的方法呼叫在程式設計的時候並不確定,當處於執行期間才確定。就是這個引用變數究竟指向哪一個例項物件,在編譯期間是不確定的,只有執行期才能確定,這樣不用修改原始碼就可以把變數繫結到不同的類例項上,讓程式擁有了多個執行狀態,這就是多型。


    1870221-e150addab6fea53a.png

說人話:

允許將子類型別的指標賦值給父類型別的指標,把不同的子類物件都當作父類來看。比如你家有親屬結婚了,讓你們家派個人來參加婚禮,邀請函寫的是讓你爸來,但是實際上你去了,或者你妹妹去了,這都是可以的,因為你們代表的是你爸,但是在你們去之前他們也不知道誰會去,只知道是你們家的人。可能是你爸爸,可能是你們家的其他人代表你爸參加。這就是多型。

多型的實現機制

原理也很簡單,父類或者介面定義的引用變數可以指向子類或者具體實現類的例項物件,由於程式呼叫方法是在執行期才動態繫結的,那麼引用變數所指向的具體例項物件在執行期才確定。所以這個物件的方法是執行期正在記憶體執行的這個物件的方法而不是引用變數的型別中定義的方法。


1870221-ee82d3d52eb4d434.png