多型是物件導向三大特性中比較難理解的乙個概念,但並不複雜!在這裡介紹下有關多型的概念以及相關用法。
多型可以理解為對於同乙個方法,根據不同的物件產生不同的結果。光說肯定很抽象,下面用個例子去解釋多型。
例子:
package com.zzl.polymorphism;
public
class
polymorphismtest
}class
person
}class
teacher
extends
person
}class
student
extends
person
}
**結果:
相信大家都能看出來,上面的**和繼承以及方法重寫沒有太大的區別,唯一的區別就是在main方法中new物件時有些不同。正常的繼承new物件**應該是 teacher tea = new teacher(),而要實現多型則是 person p = new teacher()。
總結一下:
物件的轉型
正常情況下,由父類引用呼叫子類方法,一般稱作向上轉型。但是在某些情況下需要向下轉型,這時就需要用到強制轉型。比如在介面中,介面本身建立不了物件,只能通過其子類來建立物件,這個時候就需要用到向下強轉。
示例(以上面**為例):
public
class
polymorphismtest
}class
person
}class
teacher
extends
person
}class
student
extends
person
}
從上面**可以看出,物件的強制轉型和資料型別的強轉相似。但需要注意如下幾點:
物件導向(二):封裝
C 物件導向(三)多型
物件的多種形態 辛巴是獅子 辛巴是動物。animal xinba new lion 行為的多種形態 同樣的行為,但是表現形式不同。也就是說方法簽名一樣,方法體不同。簽名在這裡指的是方法名 引數以及返回值 行為的多型體現為方法的重寫 隱藏 過載 隱藏是實現多型的基本方法之一。class program...
LUA物件導向程式設計(三)多型
先來了解一下多型的概念。在物件導向語言中,多型本質就是執行時繫結,比如有乙個父類baseclass,它有2個子類subclass1,subclass2。baseclass有乙個方法func 兩個子類都重寫了這個方法。那麼我們可以定義乙個baseclass的引用obj,讓它指向乙個子類的物件,比如ba...
Python物件導向的特點(三)多型
在物件導向程式設計中,不同的子類物件呼叫相同的父類方法,產生不同的執行結果 示例 需求 定義狗類和人類,要求普通的狗類開心的玩耍,特殊的狗類和公尺老鼠玩耍。class dog object def init self,name self.name name def game self print s...