Java:類與對象概念


 
  • 什么是類?
  • 怎樣定義一個類?
  • 什么是對象,類和對象之間是什么關系,怎樣創建一個對象?
  • 對象引用和對象在內存中是如何分配的?

  • 什么是類?
       1. 類是具有相同的屬性和功能的事物的抽象的集合,在面向對象程序設計中,人們把一類事物的靜態屬性和動態可以執行的操作組合在一起就得到類這個概念。
   2. 類是個抽象的概念,用來模擬一類事物,一旦定義了一個類,這個類就永遠存在。
    比如:人,人有男人和女人,他們都有身高,體重等相同的屬性,他們都具有走路,吃飯,工作等這些相同的,可動態執行的操作,所以可以定義“人類”這樣一個類來包含他們相同的屬性和功能。
 

  • 怎樣定義一個類? 
    在Java中,使用Class這個關鍵字來定義一個類,如下:定義一個Person類
 1 /**
 2     @author   zst
 3     @version  1.0
 4 */
 5 public class Person{
 6     private String name;
 7     private int age;
 8     
 9     public void work(){
10         
11     }
12 }
說明:  1. 類名稱首字母要大寫,如果要定義的類名稱由多個單詞組成,則每個單詞的首字母都要大寫
      2. 如果是對外公開的方法需要用“public”關鍵字修飾
在上面Person類中:
1. name,age 稱為類數據成員,或字段
2. work () 稱為類的成員函數,或方法
 

  • 什么是對象,類和對象之間是什么關系,怎樣創建一個對象?
    1. 對象是類的一個個體,是具體的,實實在在存在的事物,它有自己的生命周期,由類可以創建出對象,對象也會消亡。
    2. 類一旦被建立后,就可以用這個類創建出任意個對象,然后去操作這些對象,類是抽象的,對象是具體的。
    3. 對象也叫實例,是一個真實的實體。
 
    關系:  1. 如果把對象比作是實實在在存在一輛汽車,那么類就是這輛汽車的設計圖紙,當然通過設計圖紙(類)還可以制造第二輛,第三輛這樣的汽車(對象)。
           2. 如上,通過Person類可以創建出一個叫“小明”的對象,也可以創建出另一個叫“阿黃”的對象。
 
   創建一個對象的過程也叫類的實例化,使用new關鍵字來創建對象。
 1 Person xiaoMing = new Perosn(); 
   如上就是創建一個對象的過程:執行了兩步操作:
   1. Person xiaoMing:聲明了一個叫 xiaoMing的 Person類的對象引用。
      2.  new Perosn ():創建一個Person對象,此時 xiaoMing指向創建出來的對象,也經常把 xiaoMing稱為對象名。
 

  • 對象引用和對象在內存中是如何分配的?
 
 1 /**
 2     @author   zst
 3     @version  1.0
 4 */
 5 class A
 6 {
 7     int i = 10;
 8     int j = 10;
 9     public static int k = 20;
10     
11     public void f()
12     {
13         System.out.println("我是A類對象的方法");
14     }
15 }
16 public class ObjectMemoryAllocation
17 {
18     public static void main(String[] args)
19     {
20         A aa = new A();
21         aa.f();
22         
23     }
24 }
  在上面代碼中: A aa =new A(); 這行代碼是創建對象的過程(類的實例化)。  
     A aa :聲明對象的引用變量,這個變量是在棧(stack)內存中分配的,它存儲着一個內存地址,該地址指向執行new A()后在堆中分配的一塊內存。
  new A(): 創建一個對象,該對象是在堆(heap)內存中動態分配的。
    如下圖:
     注:
      1. new出來的對象都是在堆(heap)中分配的
      2. 局部變量(如對象引用變量)都是在棧(stack)中分配
         3. 靜態變量(被static修飾的變量)和字符串常量存儲在數據段(Data Segtment)中
        4. 代碼段(Code Segment)中存放代碼
 






免責聲明!

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



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM