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