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)中存放代碼
 



相關文章
相關標籤/搜索