0
0
Lập trình
Admin Team
Admin Teamtechmely

Hiểu Về Giao Diện Java: Phương Thức Mặc Định và Tĩnh

Đăng vào 6 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

Hiểu Về Giao Diện Java: Phương Thức Mặc Định và Tĩnh

Giao diện là một trong những khái niệm cốt lõi trong lập trình Java, cung cấp cách để xác định các hợp đồng mà các lớp phải tuân theo. Với sự phát triển của Java, đặc biệt từ Java 8 trở đi, các giao diện đã trở nên mạnh mẽ và linh hoạt hơn. Nhiều nhà phát triển thường nghĩ rằng giao diện chỉ có thể chứa các phương thức mặc địnhtĩnh—nhưng thực tế thì còn rộng hơn thế. Hãy cùng khám phá sâu hơn.

Mục Lục

  1. Giao Diện Java Là Gì?
  2. Các Thành Phần Cho Phép Trong Giao Diện (Java 8+)
  3. Trường Dữ Liệu Trong Giao Diện
  4. Những Điều Giao Diện Không Thể Có
  5. Bảng Tóm Tắt
  6. Kết Luận

1. Giao Diện Java Là Gì?

Giao diện trong Java là một kiểu tham chiếu định nghĩa một tập hợp các phương thức trừu tượng và hằng số. Các lớp có thể triển khai giao diện để cam kết cung cấp hành vi cụ thể. Điều này cho phép:

  • Đa hình (Polymorphism)
  • Liên kết lỏng lẻo (Loose Coupling)
  • Mã sạch và dễ bảo trì (Clean and Maintainable Code)

Truyền thống, các giao diện chỉ thuần túy trừu tượng, chứa chỉ các chữ ký phương thức. Tuy nhiên, các phiên bản Java hiện đại đã giới thiệu các tính năng mới mở rộng khả năng của chúng.

2. Các Thành Phần Cho Phép Trong Giao Diện (Java 8+)

2.1 Phương Thức Trừu Tượng

Đây là các phương thức giao diện cổ điển, mà mặc định là công khai và trừu tượng. Chúng không có thân và phải được triển khai bởi bất kỳ lớp nào triển khai giao diện.

java Copy
interface MyInterface {
    void doSomething(); // trừu tượng theo mặc định
}
  • Trước Java 8, đây là loại phương thức duy nhất được cho phép trong giao diện.
  • Bất kỳ lớp triển khai nào phải cung cấp một cài đặt cho các phương thức này.

2.2 Phương Thức Mặc Định (Java 8+)

Phương thức mặc định cho phép bạn thêm các cài đặt cụ thể trong một giao diện. Chúng giúp phát triển các giao diện mà không làm hỏng các cài đặt hiện có.

java Copy
interface MyInterface {
    default void sayHello() {
        System.out.println("Hello");
    }
}
  • Có thể có một thân.
  • Các lớp triển khai giao diện kế thừa cài đặt mặc định.
  • Các lớp có thể ghi đè phương thức mặc định nếu cần.

2.3 Phương Thức Tĩnh (Java 8+)

Phương thức tĩnh trong giao diện hoạt động giống như phương thức tĩnh trong các lớp.

java Copy
interface MyInterface {
    static void printInfo() {
        System.out.println("Info");
    }
}
  • Có thể có một thân.
  • Được gọi bằng cách sử dụng InterfaceName.method().
  • Không thể bị ghi đè bởi các lớp triển khai.

2.4 Phương Thức Riêng (Java 9+)

Phương thức riêng được giới thiệu để giảm thiểu sự trùng lặp mã bên trong các phương thức mặc định.

java Copy
interface MyInterface {
    private void helper() {
        System.out.println("Phương thức trợ giúp");
    }

    default void useHelper() {
        helper();
    }
}
  • Chỉ có thể truy cập trong giao diện.
  • Không thể được gọi bởi các lớp triển khai.

3. Trường Dữ Liệu Trong Giao Diện

Giao diện không thể có trường thể hiện, nhưng chúng có thể định nghĩa hằng số:

java Copy
interface MyInterface {
    int CONSTANT = 10; // công khai tĩnh cuối theo mặc định
}
  • Tất cả các trường đều mặc định là public static final.
  • Chúng không thể được sửa đổi sau khi khởi tạo.

4. Những Điều Giao Diện Không Thể Có

  • Constructor – Giao diện không thể được khởi tạo trực tiếp.
  • Biến thể hiện – Chỉ có hằng số được phép.
  • Trường không tĩnh, không cuối – Những điều này không được phép.

5. Bảng Tóm Tắt

Loại Thành Phần Cho Phép? Ghi Chú
Phương thức trừu tượng ✅ Có Công khai và trừu tượng theo mặc định
Phương thức mặc định ✅ Có Có thân; Java 8+
Phương thức tĩnh ✅ Có Có thân; Java 8+; gọi qua tên giao diện
Phương thức riêng ✅ Có Java 9+; chỉ sử dụng trong giao diện
Trường/biến Chỉ hằng số Mặc định public static final
Constructor ❌ Không Không thể khởi tạo giao diện

6. Kết Luận

Giao diện trong Java không còn chỉ là “các bộ chứa phương thức trừu tượng.” Các giao diện hiện đại có thể bao gồm:

  • Phương thức trừu tượng
  • Phương thức mặc định
  • Phương thức tĩnh
  • Phương thức riêng (Java 9+)
  • Hằng số

Sự linh hoạt này cho phép các nhà phát triển thiết kế các hệ thống sạch, dễ bảo trì và có khả năng mở rộng mà không làm hỏng mã hiện có.

Vì vậy, lần sau khi ai đó nói, “Giao diện chỉ có thể có các phương thức mặc định và tĩnh,” bạn có thể tự tin sửa lại họ: còn nhiều điều khác bên trong nữa!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào