Java面向?qū)ο蠊灿谢咎卣鳎謩e為封裝性、繼承性、多態(tài)性。其中繼承是一種支持代碼可重復(fù)使用的機(jī)制,其實(shí)現(xiàn)了數(shù)據(jù)的隱藏,部分?jǐn)?shù)據(jù)對(duì)程序的其他部分隱藏,隱藏的目的是防止別人修改數(shù)據(jù)。
Java面向?qū)ο蟮幕咎卣?/span>
1、封裝性
在你的計(jì)算機(jī)中,有許多文件夾,每個(gè)文件夾中有許多文件。同一文件夾中的文件通常具有相同的屬性:例如,它們都是java文件,或者它們都是.class文件。
每個(gè)文件都是一個(gè)對(duì)象,而一個(gè)文件夾就是一個(gè)類(lèi)。具有相同屬性的對(duì)象被分組為一個(gè)類(lèi)。文件夾的名稱(chēng)就是類(lèi)的名稱(chēng)。
除了文件對(duì)象具有諸如文件名、大小、較后修改時(shí)間等屬性外,是不是還有對(duì)屬性的操作嗎?文件可以被編輯、復(fù)制、刪除、粘貼,而這些操作,可以改變屬性的值。
例如,編輯一個(gè)文件后,文件的名稱(chēng)、大小和較后修改時(shí)間都會(huì)改變。
封裝(Encapsulation),是在一個(gè)類(lèi)中集中描述這個(gè)類(lèi)的對(duì)象有哪些屬性,屬性的名稱(chēng)、數(shù)據(jù)類(lèi)型和可見(jiàn)性,以及對(duì)象有哪些操作。
根據(jù)編程語(yǔ)言的術(shù)語(yǔ),類(lèi)是一種數(shù)據(jù)類(lèi)型,可以用它來(lái)逐一定義對(duì)象。對(duì)象是稱(chēng)為類(lèi)的變量或?qū)嵗?/span>
封裝,實(shí)現(xiàn)了數(shù)據(jù)隱藏,是將一些數(shù)據(jù)從程序的其他部分隱藏起來(lái)。隱藏的目的是為了防止他人修改數(shù)據(jù)。
2.繼承性
繼承是一種支持代碼可重復(fù)使用的機(jī)制。通過(guò)定義新的類(lèi),可以從現(xiàn)有的類(lèi)中繼承代碼,減少代碼的總量和編寫(xiě)程序代碼的時(shí)間,縮短開(kāi)發(fā)周期。
例如,已經(jīng)定義了三角形類(lèi)Triangle,則定義直角三角形Rtriangle可以繼承Triangle中的數(shù)據(jù)和方法,再添加新的數(shù)據(jù)和方法,即實(shí)現(xiàn)了代碼的重用。
繼承在生活中比比皆是。當(dāng)一個(gè)建筑設(shè)計(jì)部門(mén)開(kāi)始進(jìn)行新的建筑設(shè)計(jì)時(shí),可能會(huì)繼承過(guò)去設(shè)計(jì)的一些風(fēng)格和結(jié)構(gòu)理念。經(jīng)過(guò)修改和補(bǔ)充,一個(gè)新的設(shè)計(jì)就產(chǎn)生了。
3.多態(tài)性
多態(tài)性類(lèi)似于自然語(yǔ)言中的多義性現(xiàn)象,比如中文的"打"字,在不同的語(yǔ)境下有不同的含義。例如,如漢字“打”,用在不同上下文中含義不同?!按蜥u油”是買(mǎi)醬油,“打蘋(píng)果”是削蘋(píng)果皮,“打牌”是玩牌,“打車(chē)”則是租車(chē)。
這種根據(jù)上下文來(lái)確定一個(gè)詞的含義的做法顯然增強(qiáng)了這個(gè)詞的表現(xiàn)力。面向?qū)ο笳Z(yǔ)言中的多態(tài)性也是指以單一接口的形式表達(dá)許多不同的動(dòng)作。
Java中有方法重載(method overloading)和方法重寫(xiě)(method overriding)兩種多態(tài)。