淺談java類(lèi)和對(duì)象
一、面向?qū)ο蟮拿枋?/h2>
面向?qū)ο笫且环N現(xiàn)在最為流行的程序設(shè)計(jì)方法,幾乎現(xiàn)在的所有應(yīng)用都以面向?qū)ο鬄橹髁?,最早的面向?qū)ο蟮母拍顚?shí)際上是由IBM提出的,在70年代的Smaltalk語(yǔ)言之中進(jìn)行了應(yīng)用,后來(lái)根據(jù)面向?qū)ο蟮脑O(shè)計(jì)思路,才形成C++,而由C++產(chǎn)生了Java這門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言。
但是在面向?qū)ο笤O(shè)計(jì)之前,廣泛采用的是面向過(guò)程,面向過(guò)程只是針對(duì)于自己來(lái)解決問(wèn)題。面向過(guò)程的操作是以程序的基本功能實(shí)現(xiàn)為主,實(shí)現(xiàn)之后就完成了,也不考慮修改的可能性,面向?qū)ο螅嗟氖且M(jìn)行子模塊化的設(shè)計(jì),每一個(gè)模塊都需要單獨(dú)存在,并且可以被重復(fù)利用,所以,面向?qū)ο蟮拈_(kāi)發(fā)更像是一個(gè)具備標(biāo)準(zhǔn)的開(kāi)發(fā)模式。
在面向?qū)ο蠖x之中,也規(guī)定了一些基本的特征:
封裝:保護(hù)內(nèi)部的操作不被破壞。繼承:在原本的基礎(chǔ)之上繼續(xù)進(jìn)行擴(kuò)充。多態(tài):在一個(gè)指定的范圍之內(nèi)進(jìn)行概念的轉(zhuǎn)換。
對(duì)于面向?qū)ο蟮拈_(kāi)發(fā)來(lái)講也分為三個(gè)過(guò)程:OOA(面向?qū)ο蠓治觯?、OOD(面向?qū)ο笤O(shè)計(jì))、OOP(面向?qū)ο缶幊蹋?/p>
二、類(lèi)和對(duì)象的基本概念
類(lèi):是抽象的概念集合,表示的是一個(gè)共性的產(chǎn)物,類(lèi)之中定義的是屬性和行為(方法)。
對(duì)象:對(duì)象是一種個(gè)性的表示,表示一個(gè)獨(dú)立的個(gè)體,每個(gè)對(duì)象擁有自己獨(dú)立的屬性,依靠屬性來(lái)區(qū)分不同對(duì)象。
三、類(lèi)定義和使用
1、簡(jiǎn)單認(rèn)識(shí)類(lèi)
類(lèi)是對(duì)一個(gè)對(duì)象進(jìn)行描述的。主要描述對(duì)象具有哪些屬性(外觀(guān)尺寸等),哪些功能(用來(lái)干
啥)。
例如:
一個(gè)洗衣機(jī),可以將它看作一個(gè)類(lèi)別。然后屬性就是這個(gè)洗衣機(jī)的品牌、長(zhǎng)、寬、顏色等等。功能:洗衣、烘干等。
2、類(lèi)的定義
在Java中定義類(lèi),使用關(guān)鍵字class完成。語(yǔ)法如下:

忽略一下報(bào)錯(cuò),因?yàn)槭怯玫闹形摹?/p>
class為定義類(lèi)的關(guān)鍵字,ClassName為類(lèi)的名字,{}中為類(lèi)的主體。
類(lèi)中包含的內(nèi)容稱(chēng)為類(lèi)的成員。屬性主要是用來(lái)描述類(lèi)的,稱(chēng)之為類(lèi)的成員屬性或者類(lèi)成員變量。方法主要說(shuō)明類(lèi)具有哪些功能,稱(chēng)為類(lèi)的成員方法。
看一個(gè)例子:定義一個(gè)學(xué)生類(lèi)

采用Java語(yǔ)言將洗衣機(jī)類(lèi)在計(jì)算機(jī)中定義完成,經(jīng)過(guò)javac編譯之后形成.class文件,在JVM的基礎(chǔ)上計(jì)算機(jī)就可以識(shí)別了。
然后呢,類(lèi)定義完成之后,肯定無(wú)法直接使用。如果要使用,必須依靠對(duì)象,那么由于類(lèi)屬于引用數(shù)據(jù)類(lèi)型,所以對(duì)象的產(chǎn)生格式(兩種格式)如下:
1、格式一:聲明并實(shí)例化對(duì)象。

2、格式二:先聲明對(duì)象,然后實(shí)例化對(duì)象。

引用數(shù)據(jù)類(lèi)型與基本數(shù)據(jù)類(lèi)型最大的不同在于:引用數(shù)據(jù)類(lèi)型需要內(nèi)存的分配和使用。所以,關(guān)鍵字new的主要功能就是分配內(nèi)存空間,也就是說(shuō),只要使用引用數(shù)據(jù)類(lèi)型,就要使用關(guān)鍵字new來(lái)分配內(nèi)存空間。
3、實(shí)例化對(duì)象
當(dāng)一個(gè)實(shí)例化對(duì)象產(chǎn)生之后,可以按照如下的方式進(jìn)行類(lèi)的操作:
對(duì)象.屬性:表示調(diào)用類(lèi)之中的屬性;
對(duì)象.方法():表示調(diào)用類(lèi)之中的方法。
舉一個(gè)例子,來(lái)操作類(lèi):

運(yùn)行結(jié)果如下:

因?yàn)槲覜](méi)初始化學(xué)號(hào)的原因,所以是null。
4、類(lèi)的三大特性
封裝
封裝從字面上來(lái)理解就是包裝的意思,專(zhuān)業(yè)點(diǎn)就是信息隱藏,是指利用抽象數(shù)據(jù)類(lèi)型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個(gè)不可分割的獨(dú)立實(shí)體,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類(lèi)型的內(nèi)部,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對(duì)外接口使之與外部發(fā)生聯(lián)系。系統(tǒng)的其他對(duì)象只能通過(guò)包裹在數(shù)據(jù)外面的已經(jīng)授權(quán)的操作來(lái)與這個(gè)封裝的對(duì)象進(jìn)行交流和交互。也就是說(shuō)用戶(hù)是無(wú)需知道對(duì)象內(nèi)部的細(xì)節(jié),但可以通過(guò)該對(duì)象對(duì)外的提供的接口來(lái)訪(fǎng)問(wèn)該對(duì)象。
對(duì)于封裝而言,一個(gè)對(duì)象它所封裝的是自己的屬性和方法,所以它是不需要依賴(lài)其他對(duì)象就可以完成自己的操作。使用封裝有下面幾個(gè)好處:

繼承
繼承是使用已存在的類(lèi)的定義作為基礎(chǔ)建立新類(lèi)的技術(shù),新類(lèi)的定義可以增加新的數(shù)據(jù)或新的功能,也可以用父類(lèi)的功能,但不能選擇性地繼承父類(lèi)。通過(guò)使用繼承我們能夠非常方便地復(fù)用以前的代碼,能夠大大的提高開(kāi)發(fā)的效率。
繼承所描述的是“is-a”的關(guān)系,如果有兩個(gè)對(duì)象A和B,若可以描述為“A是B”,則可以表示A繼承B,其中B是被繼承者稱(chēng)之為父類(lèi)或者超類(lèi),A是繼承者稱(chēng)之為子類(lèi)或者派生類(lèi)。
實(shí)際上繼承者是被繼承者的特殊化,它除了擁有被繼承者的特性外,還擁有自己獨(dú)有的特性。例如貓有抓老鼠、爬樹(shù)等其他動(dòng)物沒(méi)有的特性。同時(shí)在繼承關(guān)系中,繼承者完全可以替換被繼承者,反之則不可以,例如我們可以說(shuō)貓是動(dòng)物,但不能說(shuō)動(dòng)物是貓就是這個(gè)道理,其實(shí)對(duì)于這個(gè)我們將其稱(chēng)之為“向上轉(zhuǎn)型”。

多態(tài)
多態(tài)就是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。因?yàn)樵诔绦蜻\(yùn)行時(shí)才確定具體的類(lèi),這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類(lèi)實(shí)現(xiàn)上,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具體代碼,讓程序可以選擇多個(gè)運(yùn)行狀態(tài),這就是多態(tài)性。
所以對(duì)于多態(tài)我們可以總結(jié)如下:指向子類(lèi)的父類(lèi)引用由于向上轉(zhuǎn)型了,它只能訪(fǎng)問(wèn)父類(lèi)中擁有的方法和屬性,而對(duì)于子類(lèi)中存在而父類(lèi)中不存在的方法,該引用是不能使用的,盡管是重載該方法。若子類(lèi)重寫(xiě)了父類(lèi)中的某些方法,在調(diào)用該些方法的時(shí)候,必定是使用子類(lèi)中定義的這些方法(動(dòng)態(tài)連接、動(dòng)態(tài)調(diào)用)。
對(duì)于面向?qū)ο蠖?,多態(tài)分為編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。其中編輯時(shí)多態(tài)是靜態(tài)的,主要是指方法的重載,它是根據(jù)參數(shù)列表的不同來(lái)區(qū)分不同的函數(shù),通過(guò)編輯之后會(huì)變成兩個(gè)不同的函數(shù),在運(yùn)行時(shí)談不上多態(tài)。而運(yùn)行時(shí)多態(tài)是動(dòng)態(tài)的,它是通過(guò)動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)的,也就是我們所說(shuō)的多態(tài)性。

到此這篇關(guān)于淺談java類(lèi)和對(duì)象的文章就介紹到這了,更多相關(guān)java類(lèi)和對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 中Object的wait() notify() notifyAll()方法使用
這篇文章主要介紹了Java 中Object的wait() notify() notifyAll()方法使用的相關(guān)資料,需要的朋友可以參考下2017-05-05
IDEA啟動(dòng)tomcat狀態(tài)404的解決
在使用Idea進(jìn)行Java?Web開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到Tomcat出現(xiàn)404錯(cuò)誤的問(wèn)題,本文就來(lái)介紹了IDEA啟動(dòng)tomcat狀態(tài)404的解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Java實(shí)現(xiàn)發(fā)送郵件并攜帶附件
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)發(fā)送郵件并攜帶附件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
java 2d畫(huà)圖示例分享(用java畫(huà)圖)
這篇文章主要介紹了java 2D畫(huà)圖示例(用java畫(huà)圖),需要的朋友可以參考下2014-04-04
javaweb判斷當(dāng)前請(qǐng)求是否為移動(dòng)設(shè)備訪(fǎng)問(wèn)的方法
這篇文章主要為大家詳細(xì)介紹了javaweb判斷當(dāng)前請(qǐng)求是否為移動(dòng)設(shè)備訪(fǎng)問(wèn)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
EasyExcel實(shí)現(xiàn)讀取excel中的日期單元格并自動(dòng)判定終止讀取
這篇文章主要為大家詳細(xì)介紹了EasyExcel如何實(shí)現(xiàn)讀取excel中的日期單元格并自動(dòng)判定終止讀取,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
Java實(shí)現(xiàn)汽車(chē)租賃系統(tǒng)
這篇文章介紹了Java實(shí)現(xiàn)汽車(chē)租賃系統(tǒng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

