Nested Interface trong Java



Nested Interface là gì?

Một Interface mà được khai báo bên trong một Interface khác thì được gọi là Nested Interface. Tương tự như Inner Class, thì bạn sử dụng Nested Interface để nhóm các Interface có mối quan hệ với nhau để làm tăng tính đọc và giúp dễ dàng duy trì chúng hơn. Nested Interface phải được tham chiếu bởi Outer Interface hoặc bởi các lớp. Bạn không thể truy cập chúng một cách trực tiếp.

Một số điểm cần ghi nhớ về Nested Interface

  • Nested Interface phải là public nếu được khai báo bên trong Interface. Nhưng nếu nó được khai báo bên trong lớp thì bạn có thể sử dụng bất kỳ Modifier nào.

  • Theo ngầm định thì Nested Interface được khai báo là static.

Cú pháp của Nested Interface được khai báo bên trong Interface

interface outer_interface {
	// phan khai bao code
	interface nested_interface {
		// phan khai bao code
	}
}

Cú pháp của Nested Interface được khai báo bên trong lớp

class ten_lop{  
    // phan code
    interface nested_interface {  
    // phan khai bao code
    }  
}   
Quảng cáo

Ví dụ với trường hợp khai báo bên trong Interface

Ví dụ sau minh họa cách khai báo và truy cập Nested Interface.

interface Showable {
	void show();

	interface Message {
		void printMessage();
	}
}

class NestedInterfaceExample implements Showable.Message {
	public void printMessage() {
		System.out.println("Hello nested interface!!!");
	}

	public static void main(String args[]) {
		Showable.Message message = new NestedInterfaceExample();// tai day la dang upcasting
		message.printMessage();
	}
}

Chạy chương trình Java trên sẽ cho kết quả:

Hello nested interface!!!

Như trong ví dụ trên, chúng ta có thể truy cập Message Interface bởi Outer Interface của nó là Showable bởi vì chúng ta không thể truy cập nó một cách trực tiếp. Việc này cũng giống như trường hợp chiếc điện thoại để trong phòng, chúng ta phải vào phòng thì mới lấy được nó. Trong Collection Framework, một ví dụ cho trường hợp Nested Interface là Entry. Entry là Interface con của Map, và để truy cập nó, chúng ta sử dụng cú pháp Map.Entry.

Quảng cáo

Ví dụ với trường hợp khai báo bên trong lớp

Ví dụ sau minh họa cách chúng ta định nghĩa một Interface bên trong một lớp và cách để truy cập nó.

class A {
	interface Message {
		void printMessage();
	}
}

class NestedInterfaceExample implements A.Message {
	public void printMessage() {
		System.out.println("Hello nested interface!!!");
	}

	public static void main(String args[]) {
		A.Message message = new NestedInterfaceExample();// tai day la dang upcasting
		message.printMessage();
	}
}

Chạy chương trình Java trên sẽ cho kết quả:

Hello nested interface!!!

Câu hỏi: Chúng ta có thể định nghĩa một lớp ở bên trong một Interface không?

Có, nếu bạn định nghĩa một lớp bên trong một Interface, thì Compiler sẽ tạo lớp đó là dạng Static Nested Class. Cú pháp như sau:

interface VietJack{  
  class VietJackTeam{
  }  
}  

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.




Tài liệu giáo viên