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中,一般是用大寫字母開始一個類的名稱(比較規範,推薦的用法),並大寫後續的單詞,例如: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