Phương thức (Methods) - Tái sử dụng Code

Đăng ngày: 25-08-2025 15:00
học javajava cơ bảnlập trình javaphương thức trong javamethod javahàm trong javatham sốgiá trị trả vềmethod overloadingtái sử dụng code

Chào mừng bạn đến với bài 6 của series "Chinh Phục Java"! Ở những bài trước, chúng ta đã viết tất cả code bên trong phương thức `main`. Cách này ổn cho các chương trình nhỏ. Nhưng khi ứng dụng lớn hơn, nó sẽ trở nên rất lộn xộn. Hôm nay, chúng ta sẽ học một kỹ thuật cực kỳ quan trọng. Đó là **Phương thức (Method)**. Phương thức giúp bạn chia nhỏ code thành các khối logic và tái sử dụng chúng.

1. Phương thức là gì? Tại sao phải dùng?

Trong Java, phương thức là một khối code được đặt tên. Nó thực hiện một công việc cụ thể. Hãy nghĩ về nó như một công thức nấu ăn. Bạn có thể dùng công thức "chiên trứng" nhiều lần mà không cần viết lại từ đầu. Tương tự, bạn có thể "gọi" một phương thức nhiều lần trong chương trình. Điều này mang lại rất nhiều lợi ích cho việc lập trình.

Sử dụng phương thức giúp code của bạn **dễ đọc hơn**. Thay vì một khối code dài 100 dòng, bạn có thể chia nó thành các phương thức nhỏ. Mỗi phương thức có một cái tên mang ý nghĩa. Nó cũng giúp code **dễ bảo trì hơn**. Khi cần sửa một logic, bạn chỉ cần sửa ở một nơi duy nhất. Quan trọng nhất, nó thúc đẩy việc **tái sử dụng code (code reuse)**. Đây là một nguyên tắc vàng trong lập trình.

2. Cấu trúc của một Phương thức

Một phương thức trong Java có một cấu trúc rất rõ ràng. Nó bao gồm các thành phần sau: kiểu truy cập, kiểu trả về, tên phương thức và danh sách tham số. Hãy cùng phân tích một ví dụ đơn giản. Đây là một phương thức dùng để chào một người nào đó.


public static void greetUser(String name) {
    System.out.println("Xin chào, " + name + "!");
}
  • public static: Đây là các từ khóa về truy cập và phạm vi. Chúng ta sẽ tìm hiểu sâu hơn về chúng ở các bài OOP sau. Hiện tại, bạn cứ tạm thời sử dụng chúng.
  • void: Đây là **kiểu trả về (return type)**. Từ khóa `void` có nghĩa là phương thức này không trả về bất kỳ giá trị nào. Nó chỉ thực hiện một hành động.
  • greetUser: Đây là **tên của phương thức**. Tên nên bắt đầu bằng một động từ và tuân theo quy tắc camelCase (viết thường từ đầu, viết hoa chữ cái đầu của các từ sau).
  • (String name): Đây là **danh sách tham số (parameter list)**. Phương thức này nhận vào một giá trị có kiểu `String` và đặt tên cho nó là `name` để sử dụng bên trong.
  • { ... }: Khối lệnh bên trong cặp ngoặc nhọn này là **thân của phương thức (method body)**. Đây là nơi chứa các công việc mà phương thức sẽ thực hiện.

3. Gọi Phương thức và Truyền Tham số

Sau khi định nghĩa một phương thức, nó sẽ không tự chạy. Bạn cần phải **gọi (call hoặc invoke)** nó từ một nơi khác. Ví dụ như từ phương thức `main`. Khi gọi, bạn cần truyền vào các giá trị tương ứng với tham số đã định nghĩa. Những giá trị này được gọi là **đối số (arguments)**.


public class MethodCallExample {
    // Định nghĩa phương thức ở đây, bên ngoài phương thức main
    public static void greetUser(String name) {
        System.out.println("Xin chào, " + name + "!");
    }

    public static void main(String[] args) {
        // Gọi phương thức greetUser và truyền vào các đối số khác nhau
        greetUser("An");     // In ra: Xin chào, An!
        greetUser("Bình");   // In ra: Xin chào, Bình!
    }
}

Như bạn thấy, chúng ta đã tái sử dụng khối lệnh chào mừng hai lần. Chúng ta chỉ cần truyền vào các tên khác nhau. Điều này tiện lợi hơn rất nhiều so với việc viết hai dòng `System.out.println` riêng biệt.

Phương thức (Methods) - Tái sử dụng Code - 0

4. Phương thức có Giá trị trả về (Return Values)

Nhiều phương thức không chỉ thực hiện hành động. Chúng còn tính toán và trả về một kết quả. Thay vì `void`, bạn sẽ chỉ định kiểu dữ liệu mà phương thức sẽ trả về. Ví dụ: `int`, `double`, `String`. Bên trong phương thức, bạn phải sử dụng từ khóa `return` để trả về giá trị. Lệnh `return` cũng sẽ kết thúc phương thức ngay lập tức.


public class ReturnValueExample {
    // Phương thức này nhận vào hai số nguyên và trả về tổng của chúng
    public static int add(int number1, int number2) {
        int sum = number1 + number2;
        return sum; // Trả về giá trị của biến sum
    }

    public static void main(String[] args) {
        // Gọi phương thức add và lưu kết quả vào một biến
        int result = add(10, 20);

        System.out.println("Tổng của 10 và 20 là: " + result); // In ra 30
    }
}

5. Nạp chồng Phương thức (Method Overloading)

Java cho phép bạn định nghĩa nhiều phương thức có **cùng tên** trong cùng một lớp. Miễn là **danh sách tham số của chúng khác nhau**. Sự khác biệt có thể là về số lượng tham số hoặc kiểu dữ liệu của tham số. Kỹ thuật này được gọi là **nạp chồng phương thức**. Nó giúp bạn tạo ra các phiên bản khác nhau của một hành động. Điều này làm cho code của bạn trở nên linh hoạt hơn.


public class OverloadingExample {
    // Phiên bản 1: Cộng hai số nguyên
    public static int add(int a, int b) {
        System.out.println("Đang cộng 2 số nguyên...");
        return a + b;
    }

    // Phiên bản 2: Cộng hai số thực
    public static double add(double a, double b) {
        System.out.println("Đang cộng 2 số thực...");
        return a + b;
    }
    
    // Phiên bản 3: Cộng ba số nguyên
    public static int add(int a, int b, int c) {
        System.out.println("Đang cộng 3 số nguyên...");
        return a + b + c;
    }

    public static void main(String[] args) {
        System.out.println(add(5, 10));         // Gọi phiên bản 1
        System.out.println(add(3.5, 2.5));      // Gọi phiên bản 2
        System.out.println(add(1, 2, 3));       // Gọi phiên bản 3
    }
}

Kết luận

Hôm nay, bạn đã học cách tổ chức code một cách chuyên nghiệp. Phương thức là công cụ nền tảng để viết code sạch sẽ, dễ hiểu và có thể tái sử dụng. Hãy tập thói quen chia nhỏ các vấn đề phức tạp thành các phương thức đơn giản. Ở bài tiếp theo, chúng ta sẽ bắt đầu khám phá Lập trình Hướng đối tượng. Đây là một tư duy hoàn toàn mới và là thế mạnh lớn nhất của Java. Hẹn gặp lại bạn!

0 Bình luận