java什么是構(gòu)造方法
java什么是構(gòu)造方法
構(gòu)造方法是一種特殊的方法,它是一個與類同名且沒有返回值類型的方法。對象的創(chuàng)建就是通過構(gòu)造方法來完成,其功能主要是完成對象的初始化。當(dāng)類實例化一個對象時會自動調(diào)用構(gòu)造方法。構(gòu)造方法和其他方法一樣也可以重載。
類與對象的概念:程序設(shè)計所面對的問題域——客觀世界,是由許多事物構(gòu)成的,這些事物既可以是有形的(比如一輛汽車),也可以是無形的(比如一次會議)。把客觀世界中的事物映射到面向?qū)ο蟮某绦蛟O(shè)計中就是對象。對象是面向?qū)ο蟪绦蛟O(shè)計中用來描述客觀事物的程序單位??陀^世界中的許多對象,無論其屬性還是其行為常常有許多共同性,抽象出這些對象的共同性便可以構(gòu)成類。所以,類是對象的抽象和歸納,對象是類的實例。抽象原則
所謂抽象(abstraction),就是從被研究對象中舍棄個別的、非本質(zhì)的、或與研究主旨無關(guān)的次要特征,而抽取與研究工作有關(guān)的實質(zhì)性內(nèi)容加以考察,形成對所研究問題正確的、簡明扼要的認識。例如,“馬”就是一個抽象的概念,實際上沒有任何兩匹馬是完全相同的,但是我們舍棄了每匹馬個體之間的差異,抽取其共同的、本質(zhì)性的特征,就形成了“馬”這個概念。抽象是科學(xué)研究中經(jīng)常使用的一種方法,是形成概念的必要手段。在計算機軟件開發(fā)領(lǐng)域,抽象原則的運用非常廣泛,概括起來,可分為過程抽象和數(shù)據(jù)抽象兩類。
過程抽象
過程抽象是指:軟件開發(fā)者可以把任何一個完成確定功能的操作序列都看作是一個單一的實體,盡管它實際上可能是由一系列更低級的操作完成的。運用過程抽象,軟件開發(fā)者可以把一個復(fù)雜的功能分解為一些子功能(模塊),如果子功能仍比較復(fù)雜,則可以進一步分解。這使得開發(fā)者可以在不同的抽象層次上考慮問題,在較高層次上思考時可以不關(guān)心較低層次的實現(xiàn)細節(jié)。面向過程的程序設(shè)計采用的是過程抽象方法。使用過程抽象有利于控制、降低整個程序的復(fù)雜度,但是,這種方法允許在全系統(tǒng)的范圍內(nèi)進行功能的描述,本身自由度大,難于規(guī)范化和標準化,不易保證軟件的質(zhì)量,而且操作起來也有一定難度。
數(shù)據(jù)抽象:
數(shù)據(jù)抽象把系統(tǒng)中需要處理的數(shù)據(jù)和施加于這些數(shù)據(jù)之上的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類型。每個抽象數(shù)據(jù)類型既包含了數(shù)據(jù),也包含了針對這些數(shù)據(jù)的授權(quán)操作,并限定數(shù)據(jù)的值只能由這些操作來觀察和修改。因此,數(shù)據(jù)抽象是相對于過程抽象更為嚴格、更為合理的抽象方法。面向?qū)ο蟮某绦蛟O(shè)計就是采用數(shù)據(jù)抽象這一方法來構(gòu)建程序中的類和對象的。它強調(diào)把數(shù)據(jù)和操作結(jié)合為一個不可分的系統(tǒng)單位——對象,對象的外部只需要知道這個對象能做什么,而不必知道它是如何做的。
對象:
只要仔細研究程序設(shè)計所面對的問題域——客觀世界,我們就可以看到:客觀世界是由一些具體的事物構(gòu)成的,每個事物都具有自己的一組靜態(tài)特征(屬性)和一組動態(tài)特征(行為)。例如,一輛汽車有顏色、型號、馬力、生產(chǎn)廠家等靜態(tài)特征,又具有行駛、轉(zhuǎn)彎、停車等動態(tài)特征。把客觀世界的這一事實映射到面向?qū)ο蟮某绦蛟O(shè)計中,則把問題域中的事物抽象成了對象(Object),事物的靜態(tài)特征(屬性)用一組數(shù)據(jù)來描述,事物的動態(tài)特征(行為)則用一組方法來刻畫。因此,對象具有下述特征:(鄭州北大青鳥http://bdqn.hnbenet.com)
(1) 對象標識:即對象的名字,是用戶和系統(tǒng)識別它的唯一標志。例如,汽車的牌照可作為每一輛汽車對象的標識。對象標識有“外部標識”和“內(nèi)部標識”之分。外部標識供對象的定義者或使用者用,內(nèi)部標識供系統(tǒng)內(nèi)部唯一地識別每一個對象。在計算機世界中,我們可以把對象看成計算機存儲器中一塊可標識的區(qū)域,它能保存固定或可變數(shù)目的數(shù)據(jù)(或數(shù)據(jù)的集合)。
(2) 屬性:即一組數(shù)據(jù),用來描述對象的靜態(tài)特征。例如,汽車的顏色、型號、馬力、生產(chǎn)廠家等。在Java程序中,把這一組數(shù)據(jù)稱為數(shù)據(jù)成員。
(3) 方法:也稱為服務(wù)或操作,它是對象動態(tài)特征(行為)的描述。每一個方法確定對象的一種行為或功能。例如,汽車的行駛、轉(zhuǎn)彎、停車等動作可分別用move( )、rotate( )、stop( )等方法來描述。為避免混淆,本書中把方法稱為成員方法。在Java程序中,類是創(chuàng)建對象的模板,對象是類的實例,任
何一個對象都是隸屬于某個類的。Java程序設(shè)計是從類的設(shè)計開始的,所以,在進一步講述對象的知識之前,必須先掌握類的概念。
類
對象是對事物的抽象,而類是對對象的抽象和歸納。人類在認識客觀世界時經(jīng)常采用的思維方法就是把眾多的事物歸納成一些類。分類所依據(jù)的原則是抽象,即抽象出與當(dāng)前目標有關(guān)的本質(zhì)特征,而忽略那些與當(dāng)前目標無關(guān)的非本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物歸結(jié)為一類,得出一個抽象的.
在面向?qū)ο蟮木幊陶Z言中,類是一個獨立的程序單位,是具有相同屬性和方法的一組對象的集合。類的概念使我們能對屬于該類的全部對象進行統(tǒng)一的描述。例如,“樹具有樹根、樹干、樹枝和樹葉,它能進行光合作用”。這個描述適合于所有的樹,從而不必對每棵具體的樹都進行一次這樣的描述。因此,在定義對象之前應(yīng)先定義類。描述一個類需要指明下述三個方面內(nèi)容:
(1)類標識:類的一個有別于其他類的名字,這是必不可少的。
(2)屬性說明:用來描述相同對象的靜態(tài)特征。
(3)方法說明:用來描述相同對象的動態(tài)特征。