java基礎-類的定義、成員變量、方法、對象的創建與使用


一.JAVA類的定義

  JAVA里面有class關鍵字定義一個類,后面加上自定義的類名即可。如這里定義的person類,使用class person定義了一個person類,然后在person這個類的類體里面定義person這個類應該具有的成員變量(即屬性)和方法,如這里定義的int  id和int  age這個兩個成員變量,或者叫屬性,這個id表示人的身份證號碼,人應該具有這個屬性,age表示人的年齡,這也是人應該具有的。這樣就在person這個類里面定義了兩個人應該有的屬性,接下來就是定義方法了,這里定義了三個方法,分別是getAge()、setAge(int  i)和getId(),分別用來獲取人的年齡,設置人的年齡,獲取人的id,getAge()方法獲取了人的年齡后,將獲取到的值返回,所以使用了return  age語句,getId()方法也使用了return  id語句用於返回獲取到的id的值。

二. 成員變量

  JAVA里面的任何變量首先應該要聲明,然后再賦值,然后再使用。成員變量局部變量有一個重要區別:成員變量在類里面聲明時如果不進行初始化,那么JAVA會默認給它初始化,而局部變量JAVA不會默認給它初始化,所以在方法里面聲明一個局部變量如果不給它初始化時就會出錯。默認初始化大多數都是0,boolean類型的為false,引用類型的為null,如過不記得JAVA對成員變量默認的初始化是多少的話,那就這樣做,定義一個成員變量,不給它初始化,然后直接打印這個成員變量,打印出來的結果就是JAVA默認的初始化的值。

三、Java面向對象的基本概念——引用

  引用類型和基本類型有着巨大的區別,當聲明一個int  i=0時,系統會馬上給這個i分配一個內存空間(在棧內存里面分配一小塊區域用來裝數字0),里面裝着一個值為0,以后使用i這個名字馬上就可以訪問這個內存空間里面的值,這就是基本數據類型,所以基礎類型就只占一塊內存。基礎類型之外的類型全都叫引用類型,我們定義一個Mouse  m,這個m就是一個引用類型的數據。引用類型有什么重要的特征——引用類型占2塊內存。我們定義好這個類之后,需要使用new關鍵字把這個類的對象實例化出來,也就是真真正正造出一個對象出來才能使用這個對象。

如何在內存中區分類和對象

  類是靜態的概念,是位於代碼區里面。對象是new出來的,它是位於堆內存,為什么對象要位於堆內存?因為堆內存是用來動態分配內存的,只有在運行當中才會new一個對象放堆內存里面,那這個對象到底有多大個,這個東西你不知道,你沒有辦法提前知道,所以你沒有辦法提前分配內存給這個對象,你只有在運行期間才能去分配它。什么叫運行期間?敲JAVAC這個命令那是在編譯期間,編譯完成后再敲JAVA命令,那就是運行期間了。只有在運行期間,才能夠明白這個對象到底要分配多大的空間給它,所以把它放在堆內存里面,堆內存比較大,動態分配內存用它。如果這個對象不用了,那它就是垃圾,那么就等着垃圾收集器把它收集回去,釋放掉占用的內存。

  記住,以后一提到引用,腦子里馬上浮現引用那就是一小塊內存指向一大塊內存。

四、對象的創建和使用

五、類和對象的關系

在內存中分析類和對象的關系

  假設這里有一個類C,我們定義了一個類class C,然后在這個類里面定義了兩個成員變量: int  i和int  j。定義好了這兩個成員變量以后,我們寫了一個main()方法(public static void main(Strng[] args)),程序開始執行。第一句我們寫了 C c1 = new C(),這句的代碼是我們相當於在堆內存里創建了一個對象,同時也創建了這個對象的一個引用對象c1,c1位於棧內存中,c1這個引用對象指向堆中一大塊內存,這一大塊內存里面裝着new出來的那個對象。這里面我們一般來說是new出來兩個對象c1和c2,當然,實際上,嚴格來講,c1和c2叫做對象的引用,有時候,簡稱new出來了兩個對象,c1和c2。你腦子里馬上要浮現出兩塊內存,c1指向一塊,c2指向一塊。局部變量是分配在棧內存里面的,main方法里面的c1和c2都是局部變量,所以在棧里面分配了兩小塊內存出來,一塊是c1的,一塊是c2的,c1這塊內存里面裝着一個值,或者叫裝着一個地址,這個地址是什么,我們不知道,我們只知道根據這個值就能找到new出來的C這個類里面的一個對象,而在這個對象里面有它自己的成員變量i和j,里面的兩小塊內存是分別用來裝i和j的值的,因為每一個對象都有自己不同的成員變量的值,所以c1指向的那塊對內存里面又分成一小塊一小塊內存,每一個小塊的內存都裝着這個對象的成員變量(或者叫屬性)。如這里的第一小塊裝着i的值,第二小塊裝着j的值,所以當我們去訪問第一小塊里面裝着的成員變量時,我們應該這樣寫:c1.i,這樣就拿到了i的值,c1.j,這樣就拿到了j的值。同理,c2這個對象也指向了一個new出來的C這個類里面的另一個對象,這個對象也有成員變量i和j,只不過和c1指向的那個對象里的i和j的值不同而已。要訪問這個這個對象的成員變量時 ,也是要c2.i,c2.j這樣去訪問。

六、構造方法

  在面向對象里面有一個特殊的方法,叫構造方法。構造方法是用來創建一個新的對象的,與new組合在一起用,使用new+構造方法創建一個新的對象。你new一個東西的時候,實際上你調用的是一個構造方法,構造方法就是把自己構造成一個新的對象,所以叫構造方法,構造一個新對象用的方法叫構造方法。

  構造方法比較特殊,構造方法的名字必須和類的名字完全一模一樣,包括大小寫,並且沒有返回值。如原來定義的一個person類,在類里面聲明了兩個成員變量id與age,這時候你可以再為這個person類定義一個它的構造方法person(int n,int i),這個方法的名字和類名完全相同,並且沒有返回值,也就是在這個方法前面不能寫任何的方法的返回類型修飾符,連void都不可以寫。

 構造方法范例:

 1 public class Person {
 2     int id;  //在person這類里面定義兩個成員變量id和age,
 3     int age=20;  //給成員變量age賦了初值為20
 4 
 5     /**這里就是person這個類的一個構造方法
 6      * 構造方法的規則很簡單,和類名要完全一樣,一點都不能錯,包括大小寫。
 7      * 並且沒有返回值,不能寫void在它前面修飾
 8      * @param _id
 9      * @param _age
10      */
11     public Person(int _id,int _age ) {
12         id = _id;
13         age = _age;
14     }
15 }

  構造方法寫好后就和new組合在一起使用,new的作用是構建一個新對象,創造一個新對象,所以new的時候實際當中調用的是構造方法。只有調用了這個構造方法才能構造出一個新的對象。例如:

1 public static void main(String[] args) {
2     Person tom = new Person(1, 25); // 調用person這個構造方法創建一個新的對象,並給這個對象的成員變量賦初始值
3 }

  下面是在main方法里面調用person構造方法時的內存分析情況:

  當方法調用完成之后,棧里面為它分配的空間全部都要消失,即把這個方法調用時分配給它的內存空間釋放出來,所以這個構造方法person調用完成之后,棧內存里面分配的兩小塊內存_id和_age自動消失了。這樣就把它們所占的空間讓了出來,讓其他的方法去占用。而new出來的對象則永遠留在了堆內存里面。

  聲明一個類,若沒有在類中指定其構造方法(構造函數)時,編譯器會為這個類自動添加形如類名( ){ }的構造函數

如:

1 class  point{//這里聲明一個類時並沒有給它指定其構造方法。
2     int  x;
3     int  y;
4 }

但在main方法里面我們卻可以這樣使用:

1 public static void main(String[] args){
2     point  p = new  point();
3 }

  這里這樣寫是可以的,當沒有給這個類指明構造方法時,系統會默認地給這個類加上point ( ) { }這樣一個空的構造方法。所以才可以在main方法中使用
point  p = new  point(); 實際上你調用的就是編譯器默認給它加上的point ( ) { }這個構造方法,在這個構造方法當中,默認地把類里面的成員變量x和y初始值設為0。正是因為系統給它默認加上這么一個構造方法,所以才能在main方法里面調用。但要記住一點,一旦給這個類里面指定了構造方法,那么系統就不會再給這個類添加構造方法了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 java成員變量,成員方法,使用自定義""類""對象作為方法返回值的類型 Java學習日記基礎篇(四)——類,對象之成員變量,成員方法,構造方法 編寫Java應用程序。首先,定義一個時鍾類——Clock,它包括三個int型 成員變量分別表示時、分、秒,一個構造方法用於對三個成員變量(時、分、秒) 進行初始化,還有一個成員方法show()用於顯示時鍾對象的時間。其次,再定義 一個主類——TestClass,在主類的main方法中創建多個時鍾類的對象,使用這 些對象調用方法show()來顯示時鍾的時間。 4.編寫Java應用程序。首先,定義一個時鍾類——Clock,它包括三個int型 成員變量分別表示時、分、秒,一個構造方法用於對三個成員變量(時、分、秒) 進行初始化,還有一個成員方法show()用於顯示時鍾對象的時間。其次,再定義 一個主類——TestClass,在主類的main方法中創建多個時鍾類的對象,使用這 些對象調用方法show()來顯示時鍾的時間。 JAVA類與對象(四)----成員變量與局部變量 、成員方法、構造方法 java類成員變量和成員方法 首先,定義一個時鍾類——Clock,它包括三個int型 成員變量分別表示時、分、秒,一個構造方法用於對三個成員變量(時、分、秒) 進行初始化,還有一個成員方法show()用於顯示時鍾對象的時間。其次,再定義 一個主類——TestClass,在主類的main方法中創建多個時鍾類的對象,使用這 些對象調用方法show()來顯示時鍾的時間。 假如java類里的成員變量是自身的對象 Java:【面向對象:類的定義,靜態變量,成員變量,構造函數,封裝與私有,this】 C++類的定義,成員函數的定義,對象的創建與使用
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM