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