你可以在你的程序中使用類(lèi)聲明來(lái)引入一個(gè)類(lèi)。類(lèi)聲明使用關(guān)鍵字class,遵循如下的形式:
classclass name:superclass,adopted protocols{
declarations
}
一個(gè)類(lèi)內(nèi)包含零或多個(gè)聲明。這些聲明可以包括存儲(chǔ)型和計(jì)算型屬性,實(shí)例方法,類(lèi)方法,構(gòu)造器,單獨(dú)的析構(gòu)器方法, 類(lèi)型別名,甚至其他結(jié)構(gòu)體,類(lèi),和枚舉聲明。類(lèi)聲明不能包含協(xié)議聲明。詳細(xì)討論和包含多種類(lèi)聲明的實(shí)例,參見(jiàn)類(lèi)和 結(jié)構(gòu)體一節(jié)。
一個(gè)類(lèi)只能繼承一個(gè)父類(lèi),超類(lèi),但是可以包含任意數(shù)量的協(xié)議。這些超類(lèi)第一次在type-inheritance-clause出現(xiàn),遵循任意協(xié)議。
正如在初始化聲明(Initializer Declaration)談及的那樣,類(lèi)可以有指定和方便的構(gòu)造器。當(dāng)你聲明任一中構(gòu)造器時(shí), 你可以使用requierd變量來(lái)標(biāo)記構(gòu)造器,要求任意子類(lèi)來(lái)重寫(xiě)它。指定類(lèi)的構(gòu)造器必須初始化類(lèi)所有的已聲明的屬性, 它必須在子類(lèi)構(gòu)造器調(diào)用前被執(zhí)行。
類(lèi)可以重寫(xiě)屬性,方法和它的超類(lèi)的構(gòu)造器。重寫(xiě)的方法和屬性必須以override標(biāo)注。
雖然超類(lèi)的屬性和方法聲明可以被當(dāng)前類(lèi)繼承,但是超類(lèi)聲明的指定構(gòu)造器卻不能。這意味著,如果當(dāng)前類(lèi)重寫(xiě)了超類(lèi) 的所有指定構(gòu)造器,它就繼承了超類(lèi)的方便構(gòu)造器。Swift的類(lèi)并不是繼承自一個(gè)全局基礎(chǔ)類(lèi)。
有兩種方法來(lái)創(chuàng)建已聲明的類(lèi)的實(shí)例:
類(lèi)實(shí)例屬性可以用點(diǎn)(.)來(lái)獲得,詳情參見(jiàn)獲得屬性(Accessing Properties)一節(jié)。
類(lèi)是引用類(lèi)型;當(dāng)被賦予常量或變量,函數(shù)調(diào)用時(shí),類(lèi)的實(shí)例是被引用,而不是復(fù)制。獲得更多關(guān)于引用類(lèi)型的信息, 結(jié)構(gòu)體和枚舉都是值類(lèi)型(Structures and Enumerations Are Value Types)一節(jié)。
你可以使用擴(kuò)展聲明來(lái)擴(kuò)展類(lèi)的行為,參見(jiàn)擴(kuò)展聲明(Extension Declaration).
類(lèi)聲明語(yǔ)法
類(lèi)聲明 → 特性(Attributes)列表 可選 class 類(lèi)名 泛型參數(shù)子句 可選 類(lèi)型繼承子句 可選 類(lèi)主體
類(lèi)名 → 標(biāo)識(shí)符
類(lèi)主體 → { 聲明(Declarations)列表 可選 }