Java 學習:物件和類

typeof(光)發表於2021-09-04

物件和類

從認識的角度考慮是先有物件後有類。物件,是具體的事物。類,是抽象的,是對物件的抽象。
從程式碼執行角度考慮是先有類後又物件。類是物件的模板。

物件:物件是類的一個例項,有狀態和行為。
:類是一個模板,它描述一類物件的行為和狀態。

下圖中男孩(boy)女孩(girl)、為類(class),而具體的每個人為該類的物件(object):

類和物件圖

通過上圖可以定義一個Java類:

/*
  定義名為 Boy 的類,該類包含兩個屬性和兩個行為
*/
public class Boy{
  String name;//定義了名為 name 的 String型別屬性
  int age;//定義了名為 age 的 int型別屬性
  
  void run(){//定義了名為run的行為(方法)
  }

  void walk(){//定義了名為walk的行為(方法)
  }

}

一個類可以包含一下型別變數

  • 區域性變數:在方法、構造方法或者語句塊中定義的變數,變數宣告和初始化都是在方法中,方法結束後變數就會自動銷燬。
  • 成員變數:成員變數是定義在類中,方法體之外的變數,這種變數在建立物件的時候例項化,成員變數可以被類中方法、構造方法和特定類的語句塊訪問。
  • 類變數:類變數也定義在類中,方法體之外,但必須是static修飾符修飾的變數。

一個類可以擁有多個方法,在上面的例子中:run()、walk()都是Boy類的方法。

構造方法:每個類都有構造方法。如果沒有顯示的為類定義構造方法,Java編譯器將會為該類提供一個預設構造方法。
在建立一個物件的時候,至少要呼叫一個構造方法。構造方法的名稱必須與類同名,一個類可以有多個構造方法。

下面示例,為上面的Boy類定義構造方法


public class Boy{
  String name;
  int age;

  void run(){
  }

  void walk(){
  }

  public Boy(){
    //這是最簡單的構造方法
  }

  public Boy(String name){
    //這個構造方法僅有一個引數:name
    System.out.println("我的名字是:" + name)
  }
}


建立物件
物件是根據類建立的。在Java中,使用關鍵字 new 來建立一個新的物件。建立物件需要一下三步:

  • 宣告:宣告一個物件,包括物件名稱和物件型別。
  • 例項化:使用關鍵字 new 來建立一個物件。
  • 初始化:使用 new 建立物件時,會呼叫構造方法初始化物件。

下面是一個建立物件的例子:


public class A{
  public A(String name){
    //這是個只有一個引數的構造方法
    System.out.println("我的名字是:" + name);
  }

  public static void main(String[] args){
    A myA = new A("type(光)");//這裡用關鍵字 new 建立物件
  }
}

編譯並執行上面程式碼,會列印一下結果

我的名字是:type(光)


學習筆記:

為什麼Java檔案中只能含有一個public類?

Java程式是從一個 public 類的 main 方法開始執行的,就像 C 程式是從 main() 函式開始執行一樣。只能有一個 public 類是
為了給類裝載器提供方便。一個 public 類只能定義在以它的類名為檔名的檔案中。
每個編譯單元(檔案)都有一個 public 類。因為每個編譯單元都只能有一個公共介面,用 public 類來表現。該介面可以與檔案
名相同(嚴格區分大小寫)。當然一個編譯單元內也可以沒有 public 類。


類變數型別

public class A(){
  int age;//成員變數
  
  public static void main(String[] args){

  }
}
public class A(){
  static int age;//類變數
  
  public static void main(String[] args){

  }
}
public class A(){
  
  public static void main(String[] args){
    int age;//區域性變數
  }
}

類的構造方法

  1. 構造方法的名字和類相同,可以有多個構造方法,並且沒有返回值。
  2. 構造方法主要用於為類的物件定義初始化狀態。
  3. 不能直接呼叫構造方法,必須通過關鍵字 new 來自動呼叫,從而建立類的例項
  4. Java的類都要求有構造方法,如果我們沒有自己定義構造方法,Java編譯器會預設提供一個無引數的構造方法。

new 關鍵字的作用

  1. 為物件分配記憶體空間。
  2. 引起物件構造方法的呼叫
  3. 為物件返回一個引用。

相關文章