1. Cú pháp khai báo phương thức
Khai báo phương thức trong Java giống như một công thức trong sách nấu ăn: bạn chỉ ra phương thức trả về gì (kiểu), tên là gì, cần những “nguyên liệu” nào (tham số), và viết chính công thức (thân phương thức).
Dạng tổng quát:
tip_vozvrashchaemogo_znacheniya imyaMetoda(parametry)
{
// viết lệnh tại đây
}
- kiểu trả về — phương thức trả về gì (ví dụ, int, void — nếu không trả về gì, String, v.v.).
- tên phương thức — tên do bạn đặt (theo quy tắc Java).
- tham số — danh sách biến mà phương thức sẽ sử dụng (có thể rỗng).
- thân phương thức — các lệnh của bạn trong dấu ngoặc nhọn { }.
Ví dụ về phương thức không có tham số
void printHello()
{
System.out.println("Xin chào, thế giới!");
}
Giải thích: void — phương thức không trả về gì; printHello — tên; () — không có tham số.
Ví dụ phương thức có tham số
void printName(String name)
{
System.out.println("Xin chào, " + name + "!");
}
Giải thích: void — không trả về giá trị; printName — tên phương thức; String name — một tham số kiểu String.
Ví dụ phương thức có nhiều tham số
void printSum(int a, int b)
{
System.out.println("Tổng: " + (a + b));
}
Giải thích: các tham số được liệt kê cách nhau bằng dấu phẩy. Bên trong phương thức ta dùng chúng như các biến thông thường, toán tử + thực hiện phép cộng.
Quan trọng!
- Phương thức được khai báo bên trong lớp, nhưng KHÔNG bên trong phương thức khác.
- Trong Java không thể khai báo phương thức bên trong phương thức khác — không có “búp bê Matryoshka”.
2. Gọi phương thức
Khai báo phương thức — như treo tấm biển “Pha cà phê”. Nhưng để thật sự có cà phê, bạn cần gọi phương thức — viết tên của nó và truyền giá trị cho các tham số.
Cách gọi phương thức
Nếu phương thức nằm trong cùng một lớp và được khai báo là static (như main), bạn có thể gọi nó chỉ bằng tên:
printHello();
printName("Alisa");
printSum(3, 5);
Nếu phương thức không static, cần gọi nó thông qua một đối tượng (vấn đề này sẽ nói sau khi học về lớp và đối tượng).
Ví dụ: gọi phương thức từ main
public class MethodsDemo
{
public static void main(String[] args)
{
printHello();
printName("Bob");
printSum(10, 20);
}
static void printHello()
{
System.out.println("Xin chào, thế giới!");
}
static void printName(String name)
{
System.out.println("Xin chào, " + name + "!");
}
static void printSum(int a, int b)
{
System.out.println("Tổng: " + (a + b));
}
}
Lưu ý: các phương thức được khai báo với bổ ngữ static để có thể gọi từ main (vốn cũng là static).
3. Tham số và đối số: là gì?
Tham số — là các biến được khai báo trong dấu ngoặc khi khai báo phương thức.
Đối số — là các giá trị thực tế bạn truyền khi gọi phương thức.
Tương tự: Tham số — như danh sách mua hàng; Đối số — là những gì bạn thực sự bỏ vào giỏ.
Ví dụ
static void greet(String name) // name — tham số
{
System.out.println("Xin chào, " + name + "!");
}
public static void main(String[] args)
{
greet("Katya"); // "Katya" — đối số
greet("Vasya"); // "Vasya" — đối số
}
Khi bạn gọi greet("Katya"), bên trong phương thức biến name sẽ bằng "Katya".
Nhiều tham số
static void printInfo(String name, int age)
{
System.out.println("Tên: " + name + ", tuổi: " + age);
}
public static void main(String[] args)
{
printInfo("Masha", 25);
printInfo("Petya", 31);
}
Chú ý! Kiểu và thứ tự tham số phải trùng khớp với cách bạn khai báo phương thức.
4. Thực hành: viết phương thức của riêng bạn
Phương thức in lời chào kèm tên người dùng
static void sayHelloTo(String name)
{
System.out.println("Xin chào, " + name + "!");
}
public static void main(String[] args)
{
sayHelloTo("Andrey");
sayHelloTo("Elvira");
}
Phương thức tính tổng hai số
static void printSum(int a, int b)
{
int sum = a + b;
System.out.println("Tổng: " + sum);
}
public static void main(String[] args)
{
printSum(7, 8);
printSum(15, -5);
}
Phương thức in các phần tử của mảng
static void printArray(int[] array)
{
System.out.print("Mảng: ");
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args)
{
int[] nums = {1, 2, 3, 4, 5};
printArray(nums);
}
Phương thức in cùng một chuỗi n lần
static void repeatPrint(String text, int n)
{
for (int i = 0; i < n; i++)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
repeatPrint("Java — thật tuyệt!", 3);
}
5. Phương thức giúp xây dựng ứng dụng như thế nào
Nếu bạn muốn viết một trò chơi console đơn giản hoặc máy tính, mã sẽ dễ hiểu hơn nếu mỗi nhiệm vụ được đóng gói thành một phương thức.
Ví dụ: máy tính mini
public class Calculator
{
public static void main(String[] args)
{
printGreeting();
printSum(3, 7);
printDifference(10, 4);
}
static void printGreeting()
{
System.out.println("Chào mừng đến với máy tính!");
}
static void printSum(int a, int b)
{
System.out.println("Tổng: " + (a + b));
}
static void printDifference(int a, int b)
{
System.out.println("Hiệu: " + (a - b));
}
}
Trong tương lai bạn có thể thêm các phương thức mới (nhân, chia, làm việc với mảng số, v.v.), và ứng dụng sẽ phát triển mà không biến thành một “tấm chăn” mã dài lê thê.
6. Những điểm hữu ích
Tên phương thức
- Tên phương thức thường bắt đầu bằng chữ thường và viết theo kiểu camelCase: printSum, sayHelloTo, calculateArea.
- Tên phải phản ánh hành động. Tránh doStuff và method1.
Thứ tự tham số
- Tuân thủ thứ tự và kiểu của tham số khi gọi.
- Nếu phương thức nhận printInfo(String name, int age), bạn không thể gọi printInfo(25, "Masha").
Có thể khai báo hai phương thức cùng tên không?
Có, nếu chúng có danh sách tham số khác nhau (khác kiểu hoặc số lượng). Đây là nạp chồng phương thức:
static void printSum(int a, int b) { /* ... */ }
static void printSum(int a, int b, int c) { /* ... */ }
Chủ đề này sẽ có bài giảng riêng — hiện tại chỉ cần biết rằng Java không giới hạn mỗi tên chỉ có một phương thức.
7. Lỗi thường gặp khi làm việc với phương thức và tham số
Lỗi số 1: Không khớp số lượng hoặc kiểu tham số khi gọi.
Nếu phương thức được khai báo như printSum(int a, int b), còn bạn gọi như printSum(5), trình biên dịch sẽ nói rằng không tồn tại phương thức như vậy. Tương tự, printSum("năm", 7) — lỗi kiểu dữ liệu.
Lỗi số 2: Nhầm lẫn giữa tham số và đối số.
Trong khai báo phương thức, bạn viết các tham số (ví dụ, int a, int b), còn khi gọi — là các đối số (printSum(5, 7)). Không cần tạo trong main các biến trùng tên — quan trọng là khớp kiểu và thứ tự.
Lỗi số 3: Cố gắng khai báo phương thức bên trong phương thức.
Trong Java, phương thức chỉ được khai báo ở cấp lớp. Không được khai báo bên trong phương thức khác.
Lỗi số 4: Không dùng static khi gọi từ main.
Nếu bạn gọi phương thức từ main, hãy thêm static vào khai báo hoặc tạo đối tượng và gọi phương thức trên đối tượng đó. Chi tiết — sau này, khi học OOP.
GO TO FULL VERSION