Java - 類別方法
你好,未來的Java程序設計師!今天,我們將深入Java類別方法的精彩世界。如果你是編程新手,不必擔心 - 我會一步步引導你完成這次旅程,就像過去幾年教學中我對無數學生所做的那樣。所以,捲起袖子,我們開始吧!
Java類別方法是什么?
想象一下你在建造一個機器人。機器人的身體就像Java中的類別,而它能夠執行的動作 - 例如招手、說話或跳舞 - 就像方法。類別方法實質上是類別對象可以執行的行為或動作。
為什麼類別方法很重要?
類別方法是Java編程的工作馬。他們允許我們:
- 將我們的代碼組織成可管理的塊
- 不重複使用代碼
- 在需要時執行特定任務
創建(宣告)Java類別方法
我們從創建第一個方法開始。以下是一個簡單的例子:
public class Robot {
public void wave() {
System.out.println("The robot is waving!");
}
}
在這個例子中,我們創建了一個名為Robot
的類別,其中有一個名為wave()
的方法。我們來分解一下:
-
public
:這是一個訪問修飾符。它表示方法可以從類別外部訪問。 -
void
:這是返回類型。void
表示方法不返回任何值。 -
wave()
:這是方法名,後面跟著括號。 - 大括號
{}
內的代碼是方法體。
帶參數和返回值的方法
現在,讓我們創建一個更複雜的方法:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
在這裡,add()
是一個方法,它:
- 接受兩個參數(
int a
和int b
) - 返回一個
int
值(a
和b
的和)
訪問Java類別方法
要使用方法,我們首先需要創建類別的一個對象(除非它是一個靜態方法,但稍後我們會討論這個)。以下是怎麼做:
public class Main {
public static void main(String[] args) {
Robot myRobot = new Robot();
myRobot.wave();
Calculator myCalc = new Calculator();
int result = myCalc.add(5, 3);
System.out.println("5 + 3 = " + result);
}
}
輸出:
The robot is waving!
5 + 3 = 8
我們創建對象(myRobot
和myCalc
)然後使用點表示法調用它們的方法。
Java類別方法中的this
關鍵字
this
關鍵字指的是當前對象實例。當你有與實例變量同名的參數時,這特別有用。例如:
public class Person {
private String name;
public void setName(String name) {
this.name = name; // 'this.name'指的是實例變量
}
}
公共與靜態類別方法
公共方法
公共方法 是實例方法。它們屬於類別的對象,並可以訪問實例變量。我們已經看到了這些例子。
靜態方法
靜態方法屬於類別本身,而不屬於任何特定實例。它們可以在不創建對象的情況下調用。例如:
public class MathHelper {
public static int square(int number) {
return number * number;
}
}
// 使用:
int result = MathHelper.square(4); // result是16
靜態方法不能訪問實例變量或使用this
關鍵字。
finalize()
方法
finalize()
方法是在垃圾收集器銷毀對象之前調用的。它用於清理操作。然而,一般來說,不建議依賴finalize()
進行資源管理。
public class ResourceHeavyObject {
protected void finalize() throws Throwable {
try {
// 在這裡進行清理代碼
System.out.println("Object is being finalized");
} finally {
super.finalize();
}
}
}
將它們整合在一起
讓我們創建一個更複雜的例子,展示類別方法的不同方面:
public class BankAccount {
private String accountHolder;
private double balance;
public BankAccount(String accountHolder) {
this.accountHolder = accountHolder;
this.balance = 0.0;
}
public void deposit(double amount) {
if (amount > 0) {
this.balance += amount;
System.out.println("Deposited: $" + amount);
} else {
System.out.println("Invalid deposit amount");
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= this.balance) {
this.balance -= amount;
System.out.println("Withdrawn: $" + amount);
} else {
System.out.println("Invalid withdrawal amount or insufficient funds");
}
}
public double getBalance() {
return this.balance;
}
public static double convertToCurrency(double amount, String currency) {
switch (currency.toLowerCase()) {
case "eur":
return amount * 0.85;
case "gbp":
return amount * 0.74;
default:
return amount;
}
}
}
public class Main {
public static void main(String[] args) {
BankAccount myAccount = new BankAccount("John Doe");
myAccount.deposit(1000);
myAccount.withdraw(500);
System.out.println("Current balance: $" + myAccount.getBalance());
double balanceInEuros = BankAccount.convertToCurrency(myAccount.getBalance(), "EUR");
System.out.println("Balance in Euros: €" + balanceInEuros);
}
}
這個例子展示了:
- 實例方法(
deposit()
,withdraw()
,getBalance()
) - 一個靜態方法(
convertToCurrency()
) - 使用
this
關鍵字 - 方法參數和返回值
輸出:
Deposited: $1000.0
Withdrawn: $500.0
Current balance: $500.0
Balance in Euros: €425.0
結論
恭喜你!你剛剛在Java的旅途中邁出了重要的一步,學習了類別方法。請記住,熟練才能精通。嘗試創建你自己的類別和方法,實驗不同的方法類型,並不害怕犯錯 - 這就是我們學習的方式!
在我教學的這些年裡,我發現那些表現出色的學生是那些好奇並且堅持不懈的人。所以,繼續探索,繼續編程,最重要的是,玩得開心!Java是一個強大的工具,你已經在掌握它的路上。
開心編程,未來的Java大師們!
Credits: Image by storyset