子類型
一种类型多态的形式 / 維基百科,自由的 encyclopedia
在程式語言理論中,子類型(動名詞,英語:subtyping)是一種類型多型的形式。這種形式下,子類型(名詞,英語:subtype)可以替換另一種相關的資料類型(超類型,英語:supertype)。也就是說,針對超類型元素進行操作的子程式、函數等程式元素,也可以操作相應的子類型。如果 S 是 T 的子類型,這種子類型關係通常寫作 S <: T,意思是在任何需要使用 T 類型對象的環境中,都可以安全地使用 S 類型的對象。子類型的準確語意取決於具體的程式語言中「X 環境中,可以安全地使用 Y」的意義。程式語言的型別系統定義了各自不同的子類型關係。
由於子類型關係的存在,某個對象可能同時屬於多種類型,因此,子類型(英語:subtyping)是一種類型多型的形式,也被稱作子類型多型(英語:subtype polymorphism)或者包含多型(英語:inclusion polymorphism)。在物件導向程式設計中,多型一般僅指這裏所說的「子類型多型」,而「參數多型」則一般被稱作泛型編程。
子類型與物件導向語言中(類或對象)的繼承是兩個概念。子類型反映了類型(即物件導向中的介面)之間的關係;而繼承反映了一類對象可以從另一類對象創造出來,是語言特性的實現。因此,子類型也稱介面繼承;繼承稱作實現繼承。