Posted on 2007-11-17 22:34
Edward's 閱讀(3991)
評(píng)論(4) 編輯 收藏 所屬分類:
java
原作:徐家福
1: 類型的概念
概念:類型刻劃了一組值及其上可施行的操作,可理解為值集和操作集構(gòu)成的二元組。
類型的概念與值的概念相對立,前者是程序中的概念,后者則是程序運(yùn)行時(shí)的概念,兩者通過標(biāo)識(shí)值的語言成分(例如,變量、表達(dá)式等)聯(lián)系起來。
比如變量v說明為具有類型T,類型T所刻劃的值集為{v1,v2,…vn,…},則變量v運(yùn)行時(shí)能取且只能取某個(gè)vi為值。由此可見,類型規(guī)定了具有該類型的變量或表達(dá)式的取值范圍。
2: 類與類型
A: 共性
在對象式語言中,“值”為對象(或?qū)ο笾敢举|(zhì)上仍為對象)。所以,對象式語言中的類型刻劃了一組對象及其上可施行的操作。類型所刻劃的對象稱為類型的實(shí)例。類也刻劃了一組對象。
兩者的共性在于二者均刻劃了一組對象及其上的操作(在前面關(guān)于類的討論中,并未強(qiáng)調(diào)類刻劃對象上的操作這一事實(shí)),所以,既可以說對象是類型的實(shí)例,也可以說對象是類的實(shí)例,類型和類在與對象的關(guān)系上是相同的。不過,類型欲刻劃一組對象及其上的操作,必須借助于類,因?yàn)轭愂沁_(dá)到這種目的的唯一設(shè)施。由此可見,類型是以類為基礎(chǔ)的,是通過類來定義的,這體現(xiàn)了二者的聯(lián)系。
B: 區(qū)別
l 作用不同
類是程序的構(gòu)造單位,是描述一組對象及其上操作的唯一語言成分,故其作用主要是具體描述這組對象,提供運(yùn)行時(shí)創(chuàng)建這些對象的“模板”。例如,基于類間的繼承關(guān)系的派生類定義設(shè)施就反映了類在描述對象方面的作用。
類型則是標(biāo)志變量或表達(dá)式取值范圍的一種語言成分,其作用主要是對這些變量或表達(dá)式運(yùn)行時(shí)的取值進(jìn)行約束。例如,對賦值語句左部的變量和右部的表達(dá)式的類型匹配檢查就反映了類型的約束作用。
l 與對象聯(lián)系的緊密程序不同
類描述對象的具體形式和其上可施行的具體操作,且強(qiáng)調(diào)所描述的一組對象的共性,因而,與具體對象聯(lián)系較密切,而與對象集的大小則聯(lián)系較少。
類型強(qiáng)調(diào)所描述的一組對象的范圍和可施行操作的范圍,與對象集的大小聯(lián)系較密切,而與其中具體對象則聯(lián)系較少。
l 并不是所有類都可直接作為類型使用
類是類型的基礎(chǔ),類型靠類來定義,有些類可直接作為類型來使用,在這種意義下,我們也可稱這些類是類型。
但是,也有一些類不能直接作為類型來使用,這是因?yàn)椋瑥念愋偷募s束作用來看,類型強(qiáng)調(diào)所刻劃的對象的確定性,即對象范圍的確定性。因此,只有所描述的對象的范圍確定的類才可直接用作類型。