1: 類型的概念
概念:類型刻划了一組值及其上可施行的操作,可理解為值集和操作集構成的二元組。
類型的概念與值的概念相對立,前者是程式中的概念,後者則是程式運行時的概念,兩者通過標識值的語言成分(例如,變數、運算式等)聯絡起來。
比如變數v說明為具有類型T,類型T所刻劃的值集為{v1,v2,…vn,…},則變數v運行時能取且只能取某個vi為值。由此可見,類型規定了具有該類型的變數或運算式的取值範圍。
2: 類與類型
A: 共性
在對象式語言中,“值”為對象(或對象指引,但本質上仍為對象)。所以,對象式語言中的類型刻划了一組對象及其上可施行的操作。類型所刻劃的對象稱為類型的執行個體。類也刻划了一組對象。
兩者的共性在於二者均刻划了一組對象及其上的操作(在前面關於類的討論中,並未強調類刻劃對象上的操作這一事實),所以,既可以說對象是類型的執行個體,也可以說對象是類的執行個體,類型和類在與對象的關係上是相同的。不過,類型欲刻劃一組對象及其上的操作,必須藉助於類,因為類是達到這種目的的唯一設施。由此可見,類型是以類為基礎的,是通過類來定義的,這體現了二者的聯絡。
B: 區別
l 作用不同
類是程式的構造單位,是描述一組對象及其上操作的唯一語言成分,故其作用主要是具體描述這組對象,提供運行時建立這些對象的“模板”。例如,基於類間的繼承關係的衍生類別定義設施就反映了類在描述對象方面的作用。
類型則是標誌變數或運算式取值範圍的一種語言成分,其作用主要是對這些變數或運算式運行時的取值進行約束。例如,對指派陳述式左部的變數和右部的運算式的類型匹配檢查就反映了類型的約束作用。
l 與對象聯絡的緊密程式不同
類描述對象的具體形式和其上可施行的具體操作,且強調所描述的一組對象的共性,因而,與具體對象聯絡較密切,而與對象集的大小則聯絡較少。
類型強調所描述的一組對象的範圍和可施行操作的範圍,與對象集的大小聯絡較密切,而與其中具體對象則聯絡較少。
l 並不是所有類都可直接作為類型使用
類是類型的基礎,類型靠類來定義,有些類可直接作為類型來使用,在這種意義下,我們也可稱這些類是類型。
但是,也有一些類不能直接作為類型來使用,這是因為,從類型的約束作用來看,類型強調所刻劃的對象的確定性,即物件範圍的確定性。因此,只有所描述的對象的範圍確定的類才可直接用作類型。
我覺得大家都應該靜下心來,仔細的讀一讀這篇文章。原作:徐家福