可延伸衍生類型 (Fortran 2003)

可延伸類型是可從中延伸新類型的非序列不可交互作業衍生類型。 您無法使用記錄結構語法來定義可延伸類型。 您可以將可延伸類型進一步分類為下列一或多個:
基本類型
只延伸本身,而不延伸其他類型。
延伸類型
不僅延伸本身,還延伸其母項類型為延伸的所有類型。
母項類型
提供元件和程序連結給從該類型延伸的所有類型。 母項類型是衍生延伸類型的可延伸類型

您可以使用 EXTENDS 屬性來定義延伸類型。 EXTENDS 屬性規格包含母項類型的名稱。 如需指定 EXTENDS 屬性的相關資訊,請參閱 TYPE

延伸類型會從其母項類型繼承所有類型參數、元件及非置換的非最終程序連結。

延伸類型也會從母項類型繼承無法存取的元件和連結。 在延伸類型中,它們仍然無法存取。 如果您延伸的類型是透過使用關聯來存取,則無法存取專用實體。

基本類型不需要有任何類型參數、元件或連結。 延伸類型不需要比其母項類型更多的類型參數、元件或連結。

類型不需要使用它或任何母項可能已定義的任何類型參數。

延伸類型具有純量、非指標、不可配置、具有與其母項類型相同類型及類型參數的母項元件。 此元件的名稱與母項類型的名稱相同,且具有相同的協助工具。

延伸類型中所宣告的類型參數或元件,不能與其母項類型的任何類型參數或元件同名。

延伸類型的範例


TYPE :: POINT ! A base type
   REAL :: X, Y
END TYPE POINT

TYPE, EXTENDS(POINT) :: COLOR_POINT ! An extension of TYPE(POINT)
   INTEGER :: COLOR                 ! Components X and Y, and component name 
END TYPE COLOR_POINT                ! POINT, inherited from parent

在此範例中,類型 COLOR_POINT 會從母項類型 POINT繼承元件 XY 。 元件會保留它們在母項類型中的所有屬性。 您可以在延伸類型的衍生類型定義中宣告其他元件和程序連結。 在可延伸類型的範例中,類型 COLOR_POINT 有一個額外的元件: COLOR。 類型 POINT 是非序列類型,不是另一個類型的延伸,因此是基本類型。 類型 COLOR_POINT 是一種延伸類型,其母項類型為 POINT

COLOR_POINT 具有上層元件 POINT。 上層元件 POINT是具有元件 XY的結構。 母項的元件是與繼承自母項類型的對應元件相關聯的繼承。 類型的上代元件是類型的上層元件或上層元件的上代元件。 COLOR_POINT 的上代元件是上層元件 POINT

如需類型參數的程式碼範例,請參閱 類型宣告 區段。