類在物件導向的程式設計正規化的基本單位。它們用作模板來建立物件。
Java中的類可以包含五個元件:
欄位和方法也稱為類的成員。類和介面也可以是一個類的成員。類可以有零個或多個類成員。
建構函式用於建立類的物件。所以必須至少有一個類別建構函式。
初始化器用於初始化類的欄位。在一個類中可以有零個或多個靜態或範例型別的初始化器。
在Java中宣告類的一般語法如下 -
<modifiers> class <class name> {
// Body of the class
}
關鍵字 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中,一般是用大寫字母開始一個類的名稱(比較規範,推薦的用法),並大寫後續的單詞,例如:Table
,FirstTime
,OrderDetail
等等。而使用 table
,firstTime
,order_detail
等這樣的形式來命名類不是一個規範的作法。
欄位和方法的名稱應以小寫字母開頭,後面的單詞的第一個字母應該大寫,例如:name
,firstName
,orderList
等等。
Dog
類宣告兩個欄位:name
和 gender
。兩個欄位都是可儲存字串的String
型別。Dog
類的每個範例都有這兩個欄位的副本。
Java中一個類有兩種型別的欄位:
有時屬性屬於類本身,不屬於該類的任何特定範例。
所有狗的數量應屬於狗類本身。狗的數量不存在於狗類的任何特定範例。
只有一個類屬性的副本存在,而不考慮範例數。類欄位也稱為類變數。範例欄位也稱為範例變數。
name
和 gender
是Dog
類的兩個範例變數。而類的變數必須使用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