Thinking in Java(1-2) Class Fundamentals
在 Java 程式設計中,類別(Class)是構建應用程式的基石。理解類別的基本概念、定義方法、以及如何操作欄位和方法,對於掌握 Java 至關重要。本文將帶你深入了解 Java 類別的基本原理和使用方法。
類別的含義
在 Java 中,類別是一種藍圖,用來描述物件(Object)的結構和行為。簡單來說,類別定義了物件的欄位(Fields)和方法(Methods),並告訴你這種新類型的物件看起來像什麼樣子。雖然在中文中常將 "class" 直譯為「類」,但更準確的理解是它是一種物件的模版。
類別的基本定義方法
定義一個類別的基本語法如下:
class ATypeName {
/* 類別主體內容 */
}
這段程式碼定義了一個名為 ATypeName
的類別,其中可以包含欄位和方法等成員。
類別的基本使用方法
要使用這個類別,我們需要創建它的實例(Instance),也就是物件。基本的使用方式如下:
ATypeName a = new ATypeName();
這行程式碼創建了一個 ATypeName
類別的物件,並將其參考賦值給變數 a
。
欄位與方法
一旦定義了類別,就可以為它設置兩種主要元素:欄位和方法。
欄位(Fields)
欄位是用來存儲物件的狀態或屬性。它們可以是任何類型的物件或基本類型。如果欄位是某個物件的參考,則需要在創建物件時初始化它們。每個物件都有自己的欄位空間,這意味著欄位不能在不同物件之間共享。
例如:
class DataOnly {
int i;
double d;
boolean b;
}
DataOnly data = new DataOnly();
在這個例子中,DataOnly
類別有三個欄位:i
、d
和 b
。當創建一個 DataOnly
的物件時,每個物件都會擁有自己獨立的這些欄位。
方法(Methods)
方法是類別的行為或功能,通常用來操作欄位或執行特定的任務。定義方法時,需要指定方法的名稱、參數列表、回傳型別以及方法體。
訪問與賦值欄位
要訪問或修改物件的欄位,可以使用點(.
)運算符。例如:
objectReference.member
// 賦值
data.i = 47;
data.d = 1.1;
data.b = false;
如果物件包含其他物件,只需連續使用點運算符即可訪問內部物件的欄位:
myPlane.leftTank.capacity = 100;
基本成員的預設值
如果基本類型的欄位沒有被顯式初始化,Java 會自動為它們賦予預設值:
Primitive | Default Value |
---|---|
boolean | false |
char | '\u0000' (null) |
byte | (byte) 0 |
short | (short) 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
需要注意的是,非類別內的區域變數(Local Variables)不適用類別的預設值初始化,未初始化的區域變數在編譯時會出現錯誤。
方法、參數與回傳值
方法的基本結構
在許多程式語言中,例如 C/C++,使用「函數」(Function)來命名子程序,而在 Java 中,這類子程序稱為「方法」(Method)。方法的基本組成部分包括:
- 方法名稱
- 參數列表(Arguments):傳遞給方法的訊息的類型和名稱
- 回傳型別(Return Type):方法執行後回傳的值的類型
- 方法體(Body)
方法的基本語法如下:
ReturnType methodName(arg1, arg2, arg3) {
// 方法體內容
}
方法名稱和參數列表合起來稱為方法的 簽名(Signature),它是方法的唯一標識。在 Java 中,方法只能作為類別的一部分來定義,並且只能通過物件來調用。如果嘗試調用未定義的方法,編譯器會報錯。
調用方法
調用方法的語法如下:
objectName.methodName(arg1, arg2, arg3);
例如,假設有一個方法 f()
,不帶任何參數,回傳型別是 int
,且有一個名為 a
的物件:
int x = a.f();
// 返回值的類型要與 x 的類型兼容
這種調用方法的方式通常被稱為 發送消息給對象,在上述例子中,消息是 f()
,對象是 a
。
參數列表
參數列表指定要傳遞給方法的訊息,這些訊息通常也是以物件的形式傳遞。參數列表中必須明確指定每個要傳遞的物件的類型和名稱。實際上,資料傳遞大多數情況下都是以參考的形式傳遞(基本類型為例外)。參數的類型必須正確匹配,否則編譯器會報錯。
範例
Boolean flag() { return true; }
double naturalLogBase() { return 2.718; }
void nothing() { return; }
void nothing() {}
- 如果回傳型別為
void
,return
關鍵字只是用來退出方法。 - 如果回傳型別不為
void
,編譯器會強制要求返回正確類型的值。
總結
掌握 Java 類別的基本概念,包括類別的定義與使用、欄位與方法的操作、預設值的設定,以及方法的參數與回傳值,是編寫高效、可維護的 Java 程式的關鍵。通過理解這些核心概念,你將能夠更加自信地設計和實現各種 Java 應用程式,並在程式設計的旅程中更上一層樓。
希望這篇文章能夠幫助你更深入地理解 Java 類別的基礎知識,並在實際編程中靈活運用這些概念。
Comments ()