類在面向?qū)ο蟮木幊谭妒降幕締挝?。它們用作模板?lái)創(chuàng)建對(duì)象。
Java中的類可以包含五個(gè)組件:
字段和方法也稱為類的成員。類和接口也可以是一個(gè)類的成員。類可以有零個(gè)或多個(gè)類成員。
構(gòu)造函數(shù)用于創(chuàng)建類的對(duì)象。所以必須至少有一個(gè)類的構(gòu)造函數(shù)。
初始化器用于初始化類的字段。在一個(gè)類中可以有零個(gè)或多個(gè)靜態(tài)或?qū)嵗愋偷某跏蓟鳌?/p>
在Java中聲明類的一般語(yǔ)法如下 -
<modifiers> class <class name> {
// Body of the class
}
關(guān)鍵字 class
用于聲明一個(gè)類。
<class name>
是用戶定義的類名稱,它應(yīng)該是有效的標(biāo)識(shí)符組成。
每個(gè)類都有一個(gè)主體(body),它在一對(duì)大括號(hào)({}
)中指定。類的主體包含其不同的組件,例如字段,方法等。
下面的代碼定義了一個(gè)名為Dog
的類,它具有一個(gè)空主體。Dog
類不使用任何修飾符。如下代碼所示 -
class Dog {
// 主體是空的,什么也沒(méi)有定義
}
類的字段表示類的屬性。
Dog
類的每個(gè)對(duì)象都有兩個(gè)屬性:名稱(name
)和性別(gender
)。Dog
類應(yīng)包括兩個(gè)字段的聲明:一個(gè)表示名稱,一個(gè)表示性別。
這些字段在類的主體中聲明。 在類中聲明一個(gè)字段的一般語(yǔ)法是 -
<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;
}
字段聲明可以使用零個(gè)或多個(gè)修飾符。字段的數(shù)據(jù)類型位于其名稱之前。 或者還可以使用值來(lái)初始化每個(gè)字段的值。
以下代碼顯示如何向Dog
類添加字段:
class Dog {
String name;
String gender;
}
在java中,一般是用大寫字母開始一個(gè)類的名稱(比較規(guī)范,推薦的用法),并大寫后續(xù)的單詞,例如:Table
,FirstTime
,OrderDetail
等等。而使用 table
,firstTime
,order_detail
等這樣的形式來(lái)命名類不是一個(gè)規(guī)范的作法。
字段和方法的名稱應(yīng)以小寫字母開頭,后面的單詞的第一個(gè)字母應(yīng)該大寫,例如:name
,firstName
,orderList
等等。
Dog
類聲明兩個(gè)字段:name
和 gender
。兩個(gè)字段都是可存儲(chǔ)字符串的String
類型。Dog
類的每個(gè)實(shí)例都有這兩個(gè)字段的副本。
Java中一個(gè)類有兩種類型的字段:
有時(shí)屬性屬于類本身,不屬于該類的任何特定實(shí)例。
所有狗的數(shù)量應(yīng)屬于狗類本身。狗的數(shù)量不存在于狗類的任何特定實(shí)例。
只有一個(gè)類屬性的副本存在,而不考慮實(shí)例數(shù)。類字段也稱為類變量。實(shí)例字段也稱為實(shí)例變量。
name
和 gender
是Dog
類的兩個(gè)實(shí)例變量。而類的變量必須使用static
關(guān)鍵字作為修飾符聲明。
以下代碼帶中,Dog
類的聲明有一個(gè)類變量 - count
。如下所示 -
class Dog {
String name; // An instance variable
String gender; // An instance variable
static long count; // A class variable because of the static modifier
}
類變量稱為靜態(tài)變量。 實(shí)例變量被稱為非靜態(tài)變量。
在這個(gè)示例中,定義一個(gè) Dog
類,并實(shí)例化三個(gè) Dog
類的實(shí)例,每次實(shí)例化類的實(shí)例時(shí),自動(dòng)將類變量count
的值加1
,用來(lái)統(tǒng)計(jì)當(dāng)前有多少 Dog
類被實(shí)例化。
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;
// 每實(shí)例化一個(gè)對(duì)象, 類變量 count 的值加 1 。
count = count + 1;
}
}
class Main {
public static void main(String[] args) {
Dog dog1 = new Dog("旺財(cái)", "公");
Dog dog2 = new Dog("阿貴", "公");
Dog dog3 = new Dog("悠悠", "母");
// 以下都是訪問(wèn)類變量的方法
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);
}
}
執(zhí)行上面代碼,得到如下結(jié)果 -
dog1.count=>3
dog2.count=>3
dog3.count=>3
Dog::count=>3