Java - Phương thức của lớp
Chào, các nhà lập trình Java tương lai! Hôm nay, chúng ta sẽ bơi lội vào thế giới thú vị của các phương thức của lớp Java. Đừng lo nếu bạn mới bắt đầu học lập trình – tôi sẽ hướng dẫn bạn qua cuộc hành trình này bước به bước, giống như tôi đã làm cho nhiều học viên khác trong những năm dạy học. Hãy cùng nhau quay tay lên và bắt đầu nhé!
Các phương thức của lớp Java là gì?
Hãy tưởng tượng bạn đang xây dựng một robot. Thân của robot tương đương với một lớp trong Java, và các hành động mà nó có thể thực hiện như vỗ tay, nói chuyện, hoặc nhảy múa tương đương với các phương thức. Các phương thức của lớp là những hành vi hoặc hành động mà các đối tượng của lớp có thể thực hiện.
Tại sao các phương thức của lớp lại quan trọng?
Các phương thức của lớp là các cơ chế làm việc của lập trình Java. Chúng cho phép chúng ta:
- Tổ chức mã của mình thành các khối có thể quản lý
- Sử dụng lại mã mà không cần lặp lại
- Thực hiện các nhiệm vụ cụ thể khi được gọi
Tạo (Khai báo) các phương thức của lớp Java
Hãy bắt đầu bằng cách tạo phương thức đầu tiên của chúng ta. Dưới đây là một ví dụ đơn giản:
public class Robot {
public void wave() {
System.out.println("Robot đang vỗ tay!");
}
}
Trong ví dụ này, chúng ta đã tạo một lớp có tên là Robot
với một phương thức có tên là wave()
. Hãy phân tích nó:
-
public
: Đây là một phần tử truy cập. Nó nghĩa là phương thức có thể được truy cập từ bên ngoài lớp. -
void
: Đây là kiểu trả về.void
nghĩa là phương thức không trả về giá trị nào. -
wave()
: Đây là tên phương thức, theo sau là dấu ngoặc đơn. - Mã trong dấu ngoặc móc
{}
là thân phương thức.
Phương thức với tham số và giá trị trả về
Bây giờ, hãy tạo một phương thức phức tạp hơn:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
Ở đây, add()
là một phương thức mà:
- Nhận hai tham số (
int a
vàint b
) - Trả về một giá trị
int
(tổng củaa
vàb
)
Truy cập các phương thức của lớp Java
Để sử dụng một phương thức, trước tiên chúng ta cần tạo một đối tượng của lớp (trừ khi đó là một phương thức static, nhưng chúng ta sẽ đến phần đó sau). Dưới đây là cách làm:
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);
}
}
Output:
Robot đang vỗ tay!
5 + 3 = 8
Chúng ta tạo các đối tượng (myRobot
và myCalc
) và sau đó sử dụng dấu chấm để gọi các phương thức của chúng.
Từ khóa this
trong các phương thức của lớp Java
Từ khóa this
đề cập đến thể hiện hiện tại của đối tượng. Nó rất hữu ích khi bạn có một tham số có cùng tên với biến thể hiện. Ví dụ:
public class Person {
private String name;
public void setName(String name) {
this.name = name; // 'this.name' đề cập đến biến thể hiện
}
}
Phương thức public vs. static của lớp
Phương thức public
Phương thức public là các phương thức thể hiện. Chúng thuộc về các đối tượng của lớp và có thể truy cập các biến thể hiện. Chúng ta đã đã thấy các ví dụ như vậy.
Phương thức static
Phương thức static thuộc về lớp chính thức, không phải bất kỳ thể hiện cụ thể nào. Chúng có thể được gọi mà không cần tạo đối tượng. Ví dụ:
public class MathHelper {
public static int square(int number) {
return number * number;
}
}
// Sử dụng:
int result = MathHelper.square(4); // result là 16
Phương thức static không thể truy cập biến thể hiện hoặc sử dụng từ khóa this
.
Phương thức finalize()
Phương thức finalize()
được gọi bởi bộ đệm rác trước khi hủy đối tượng. Nó được sử dụng cho các hoạt động dọn dẹp. Tuy nhiên, thường không khuyến khích phụ thuộc vào phương thức finalize()
để quản lý tài nguyên.
public class ResourceHeavyObject {
protected void finalize() throws Throwable {
try {
// Mã dọn dẹp ở đây
System.out.println("Đối tượng đang được hoàn thiện");
} finally {
super.finalize();
}
}
}
Kết hợp tất cả lại
Hãy tạo một ví dụ phức tạp hơn nhưng thể hiện các khía cạnh khác nhau của các phương thức của lớp:
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("Gửi tiền: $" + amount);
} else {
System.out.println("Số tiền gửi không hợp lệ");
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= this.balance) {
this.balance -= amount;
System.out.println("Rút tiền: $" + amount);
} else {
System.out.println("Số tiền rút không hợp lệ hoặc không đủ số dư");
}
}
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("Số dư hiện tại: $" + myAccount.getBalance());
double balanceInEuros = BankAccount.convertToCurrency(myAccount.getBalance(), "EUR");
System.out.println("Số dư bằng Euro: €" + balanceInEuros);
}
}
Ví dụ này minh họa:
- Các phương thức thể hiện (
deposit()
,withdraw()
,getBalance()
) - Một phương thức static (
convertToCurrency()
) - Sử dụng từ khóa
this
- Các tham số và giá trị trả về của phương thức
Output:
Gửi tiền: $1000.0
Rút tiền: $500.0
Số dư hiện tại: $500.0
Số dư bằng Euro: €425.0
Kết luận
Xin chúc mừng! Bạn đã bước ra một bước lớn trong hành trình Java của mình bằng cách học về các phương thức của lớp. Hãy nhớ, luyện tập sẽ làm bạn hoàn hảo. Thử tạo các lớp và phương thức của riêng bạn, thử nghiệm các loại phương thức khác nhau, và đừng sợ gặp lỗi – đó là cách chúng ta học hỏi!
Trong những năm dạy học, tôi đã thấy rằng các học viên xuất sắc là những người có tinh thần tham vọng và kiên nhẫn. Vì vậy, hãy tiếp tục khám phá, tiếp tục lập trình, và nhất quan, hãy tận hưởng quá trình đó! Java là một công cụ mạnh mẽ, và bạn đã ở gần như hoàn toàn chủ động nó.
Chúc bạn mạnh mẽ trong việc lập trình, các nhà lập trình Java tương lai!
Credits: Image by storyset