Tag Archives: interface

Giao diện là gì?

  1. Các khái niệm trong lập trình hướng đối tượng
  2. Đối tượng là gì?
  3. Lớp là gì?
  4. Kế thừa là gì?
  5. Giao diện là gì?
  6. Gói là gì?
  7. Câu hỏi và bài tập

Như các bạn đã được học, các đối tượng xác định sự tương tác của mình với thế giới bên ngoài thông qua các phương thức mà nó cung cấp. Các phương thức tạo nên một giao diện của đối tượng đối với thế giới bên ngoài; ví dụ: các nút điều khiển đằng trước tivi là giao diện giữa bạn với hệ thống dây điện của tivi . Bạn nhấn nút “power” để bật hoặc tắt tivi.

Hình thức phổ biến nhất của giao diện là một nhóm các phương thức với các phần thân rỗng. Nếu ta xác định các hành vi của một chiếc xe đạp dưới hình thức một giao diện thì nó thể trở thành như sau:

interface Bicycle {
	// số vòng quay của bánh xe trong mỗi phút
	void changeCadence(int newValue);

	void changeGear(int newValue);

	void speedUp(int increment);

	void applyBrakes(int decrement);
}

Để triển khai giao diện này, tên lớp của bạn sẽ cần thay đổi (thành tên một thương hiệu xe đạp cụ thể, ví dụ như ACMEBicycle), và bạn sử dụng từ khóa implements trong phần khai báo của lớp.

class ACMEBicycle implements Bicycle {
	// các phần khác của lớp
	// như đã được triển khai trước đó
}

Việc triển khai một giao diện sẽ giúp cho một lớp trở nên chính quy hơn về phương diện các hành vi mà nó cam kết cung cấp. Các giao diện tạo nên một bản quy ước giữa một lớp với thế giới bên ngoài, bản quy ước này được trình biên dịch đảm bảo tuân thủ tại thời điểm xây dựng. Nếu một lớp muốn triển khai một giao diện thì tất cả các phương thức được định nghĩa bởi giao diện đó phải xuất hiện trong mã nguồn của lớp này trước khi nó được biên dịch thành công.


Lưu ý: Để biên dịch được lớp ACMEBicycle thì bạn cần phải thêm từ khóa public vào trước các phương thức được triển khai của giao diện. Bạn có thể tìm hiểu về những lý do cho điều này trong hai bài học “Lớp và các đối tượng” và “Giao diện và Thừa kế”.

Bài được dịch từ nguồn  docs.oracle.com

Trans-team: PhúDĐ, NgọcNT, ĐạtDĐ, SơnĐH, HàĐT, ChàmNM

Sinh viên FPT Aptech Hà Nội