更新時(shí)間:2020-05-28 15:32:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2647次
類(lèi):事物的描述。是具備某些共同特征的實(shí)體的集合,它是一種抽象的數(shù)據(jù)類(lèi)型,它是對(duì)所具有相同特征實(shí)體的抽象。在面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,類(lèi)是對(duì)一類(lèi)“事物”的屬性與行為的抽象。
對(duì)象:該類(lèi)事物的實(shí)例。在Java中通過(guò)new進(jìn)行創(chuàng)建。是一個(gè)真實(shí)世界中的實(shí)體,對(duì)象與實(shí)體是一一對(duì)應(yīng)關(guān)系的,意思就是現(xiàn)實(shí)世界的每一個(gè)實(shí)體都是一個(gè)對(duì)象,所以對(duì)象是一個(gè)具體的概念。對(duì)象是一種個(gè)性的表示,表示一個(gè)獨(dú)立的個(gè)體,每個(gè)對(duì)象擁有自己獨(dú)立的屬性,依靠屬性來(lái)區(qū)分不同對(duì)象。
舉個(gè)例子
我們發(fā)的卷子出的題都是一樣的相當(dāng)于一個(gè)類(lèi),而每個(gè)同學(xué)做的都相當(dāng)于對(duì)象了
造汽車(chē)的圖紙相當(dāng)于類(lèi),而造出來(lái)的汽車(chē)相當(dāng)于對(duì)象了
每個(gè)學(xué)校的老師是一個(gè)類(lèi),但是具體到每個(gè)老師就是對(duì)象了
類(lèi)和對(duì)象的區(qū)別
1.類(lèi)是一個(gè)抽象的概念,它不存在于現(xiàn)實(shí)中的時(shí)間/空間里,類(lèi)只是為所有的對(duì)象定義了抽象的屬性與行為。就好像“Person(人)”這個(gè)類(lèi),它雖然可以包含很多個(gè)體,但它本身不存在于現(xiàn)實(shí)世界上。
2.對(duì)象是類(lèi)的一個(gè)具體。它是一個(gè)實(shí)實(shí)在在存在的東西。
3.類(lèi)是一個(gè)靜態(tài)的概念,類(lèi)本身不攜帶任何數(shù)據(jù)。當(dāng)沒(méi)有為類(lèi)創(chuàng)建任何對(duì)象時(shí),類(lèi)本身不存在于內(nèi)存空間中。
4.對(duì)象是一個(gè)動(dòng)態(tài)的概念。每一個(gè)對(duì)象都存在著有別于其它對(duì)象的屬于自己的獨(dú)特的屬性和行為。對(duì)象的屬性可以隨著它自己的行為而發(fā)生改變。
具體的:類(lèi)是對(duì)象的模板,對(duì)象是類(lèi)的實(shí)例。類(lèi)只有通過(guò)對(duì)象才可以使用,而在開(kāi)發(fā)之中應(yīng)該先產(chǎn)生類(lèi),之后再產(chǎn)生對(duì)象。類(lèi)不能直接使用,對(duì)象是可以直接使用的。
在Java中定義類(lèi),使用關(guān)鍵字class完成。語(yǔ)法如下:
class?類(lèi)名稱(chēng)?{
?????????屬性?(變量)?;
?????????行為?(方法(函數(shù)))?;
}
范例:定義一個(gè)Person類(lèi)
class?Person?{?????//?類(lèi)名稱(chēng)首字母大寫(xiě)
????String?name?;
????int?age?;
????public?void?tell()?{????????//?沒(méi)有static
??????????System.out.println("姓名:"?+?name?+?",年齡:"?+?age)?;
?????????}
}
類(lèi)定義完成之后,肯定無(wú)法直接使用。如果要使用,必須依靠對(duì)象,那么由于類(lèi)屬于引用數(shù)據(jù)類(lèi)型,所以對(duì)象的產(chǎn)生格式(兩種格式)如下:
格式一:聲明并實(shí)例化對(duì)象
格式二:先聲明對(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)存空間。
當(dāng)一個(gè)實(shí)例化對(duì)象產(chǎn)生之后,可以按照如下的方式進(jìn)行類(lèi)的操作:
對(duì)象.屬性:表示調(diào)用類(lèi)之中的屬性;
對(duì)象.方法():表示調(diào)用類(lèi)之中的方法。
范例:使用對(duì)象操作類(lèi)
package?com.wz.classandobj;
class?Person?{?
????String?name?;
????int?age?;
????public?void?get()?{
????????System.out.println("姓名:"?+?name?+?",年齡:"?+?age);
????}
}
?
public?class?TestDemo?{
????????public?static?void?main(String?args[])?{
????????????Person?per?=?new?Person()?;//?聲明并實(shí)例化對(duì)象
????????????per.name?=?"張三"?;//操作屬性內(nèi)容
????????????per.age?=?30?;//操作屬性內(nèi)容
????????????per.get()?;//調(diào)用類(lèi)中的get()方法
????????}
}
運(yùn)行結(jié)果:
姓名:張三,年齡:30
以上完成了一個(gè)類(lèi)和對(duì)象的操作關(guān)系,下面換另外一個(gè)操作來(lái)觀察一下:
package?com.wz.classandobj;
?class?Person?{?
????String?name?;
????int?age?;
????public?void?get()?{
????????System.out.println("姓名:"?+?name?+?",年齡:"?+?age);
????}
}
?
public?class?TestDemo?{
????????public?static?void?main(String?args[])?{
????????????Person?per?=?null;//聲明對(duì)象
????????????per?=?new?Person()?;//實(shí)例化對(duì)象
????????????per.name?=?"張三"?;//操作屬性內(nèi)容
????????????per.age?=?30?;//操作屬性內(nèi)容
????????????per.get()?;//調(diào)用類(lèi)中的get()方法
????????}
}
運(yùn)行結(jié)果:
姓名:張三,年齡:30
那么,問(wèn)題來(lái)了,以上兩種不同的實(shí)例化方式有什么區(qū)別呢?
我們從內(nèi)存的角度分析。首先,給出兩種內(nèi)存空間的概念:
任何情況下,只要看見(jiàn)關(guān)鍵字new,都表示要分配新的堆內(nèi)存空間,一旦堆內(nèi)存空間分配了,里面就會(huì)有類(lèi)中定義的屬性,并且屬性內(nèi)容都是其對(duì)應(yīng)數(shù)據(jù)類(lèi)型的默認(rèn)值。
于是,上面兩種對(duì)象實(shí)例化對(duì)象方式內(nèi)存表示如下:
兩種方式的區(qū)別在于①②,第一種聲明并實(shí)例化的方式實(shí)際就是①②組合在一起,而第二種先聲明然后實(shí)例化是把①和②分步驟來(lái)。
Java技術(shù)相關(guān)內(nèi)容
Java類(lèi)與對(duì)象的定義:http://m.ilovecolors.com.cn/tutorial_java_se/104.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“你知道Java類(lèi)與對(duì)象的關(guān)系嗎,看這里”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743