Java類基礎

類是什麼?

類在面向對象的編程範式的基本單位。它們用作模板來創建對象。
Java中的類可以包含五個組件:

  • 字段(域)
  • 方法
  • 構造器(也叫構造函數)
  • 靜態初始化器
  • 實例初始化程序

字段和方法也稱爲類的成員。類和接口也可以是一個類的成員。類可以有零個或多個類成員。
構造函數用於創建類的對象。所以必須至少有一個類的構造函數。

初始化器用於初始化類的字段。在一個類中可以有零個或多個靜態或實例類型的初始化器。

聲明一個類

在Java中聲明類的一般語法如下 -

<modifiers> class <class name> {
    // Body of the class
}

是對類聲明有特殊含義的關鍵字。類聲明可以有零個或多個修飾符(modifiers)。

關鍵字 class 用於聲明一個類。

<class name>是用戶定義的類名稱,它應該是有效的標識符組成。
每個類都有一個主體(body),它在一對大括號({})中指定。類的主體包含其不同的組件,例如字段,方法等。

下面的代碼定義了一個名爲Dog的類,它具有一個空主體。Dog類不使用任何修飾符。如下代碼所示 -

class Dog  {
// 主體是空的,什麼也沒有定義
}

類中的字段

類的字段表示類的屬性。

Dog類的每個對象都有兩個屬性:名稱(name)和性別(gender)。Dog類應包括兩個字段的聲明:一個表示名稱,一個表示性別。

這些字段在類的主體中聲明。 在類中聲明一個字段的一般語法是 -

<modifiers> class  className {
   <modifiers> <data type> <field name> = initialvalue;
   <modifiers> <data type> fieldName;
}
<modifiers> class  className {
   <modifiers> <data type> <field name> = initialvalue;
   <modifiers> <data type> fieldName;
}

字段聲明可以使用零個或多個修飾符。字段的數據類型位於其名稱之前。 或者還可以使用值來初始化每個字段的值。

以下代碼顯示如何向Dog類添加字段:

class Dog  {
    String  name; 
    String gender;
}

在java中,一般是用大寫字母開始一個類的名稱(比較規範,推薦的用法),並大寫後續的單詞,例如:TableFirstTimeOrderDetail等等。而使用 tablefirstTimeorder_detail 等這樣的形式來命名類不是一個規範的作法。

字段和方法的名稱應以小寫字母開頭,後面的單詞的第一個字母應該大寫,例如:namefirstNameorderList等等。

Dog類聲明兩個字段:namegender。兩個字段都是可存儲字符串的String類型。
Dog類的每個實例都有這兩個字段的副本。

Java中一個類有兩種類型的字段:

  • 類字段
  • 實例字段

有時屬性屬於類本身,不屬於該類的任何特定實例。
所有狗的數量應屬於狗類本身。狗的數量不存在於狗類的任何特定實例。

只有一個類屬性的副本存在,而不考慮實例數。類字段也稱爲類變量。實例字段也稱爲實例變量。

namegenderDog類的兩個實例變量。而類的變量必須使用static關鍵字作爲修飾符聲明。

以下代碼帶中,Dog類的聲明有一個類變量 - count。如下所示 -

class Dog  {
    String name;           // An  instance variable
    String gender;         // An  instance variable
    static long  count;    // A  class  variable  because of  the   static  modifier
}

類變量稱爲靜態變量。 實例變量被稱爲非靜態變量。

使用示例

在這個示例中,定義一個 Dog 類,並實例化三個 Dog 類的實例,每次實例化類的實例時,自動將類變量count的值加1,用來統計當前有多少 Dog 類被實例化。


class Dog  {
    String name;           // An  instance variable
    String gender;         // An  instance variable
    static long  count;    // A  class  variable  because of  the   static  modifier

    Dog(String name, String gender){
        this.name = name;
        this.gender = gender;
        // 每實例化一個對象, 類變量 count 的值加  1 。 
        count = count + 1;
    }
}

class Main {
   public static void main(String[] args) {

       Dog dog1 = new Dog("旺財", "公");
       Dog dog2 = new Dog("阿貴", "公");
       Dog dog3 = new Dog("悠悠", "母");
       // 以下都是訪問類變量的方法
       System.out.println("dog1.count=>"+dog1.count);
       System.out.println("dog2.count=>"+dog2.count);
       System.out.println("dog3.count=>"+dog3.count);
       System.out.println("Dog::count=>"+Dog.count);
   }
}

執行上面代碼,得到如下結果 -

dog1.count=>3
dog2.count=>3
dog3.count=>3
Dog::count=>3