Java - 類別方法

你好,未來的Java程序設計師!今天,我們將深入Java類別方法的精彩世界。如果你是編程新手,不必擔心 - 我會一步步引導你完成這次旅程,就像過去幾年教學中我對無數學生所做的那樣。所以,捲起袖子,我們開始吧!

Java - Class Methods

Java類別方法是什么?

想象一下你在建造一個機器人。機器人的身體就像Java中的類別,而它能夠執行的動作 - 例如招手、說話或跳舞 - 就像方法。類別方法實質上是類別對象可以執行的行為或動作。

為什麼類別方法很重要?

類別方法是Java編程的工作馬。他們允許我們:

  1. 將我們的代碼組織成可管理的塊
  2. 不重複使用代碼
  3. 在需要時執行特定任務

創建(宣告)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 aint b
  • 返回一個int值(ab的和)

訪問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

我們創建對象(myRobotmyCalc)然後使用點表示法調用它們的方法。

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