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.
interface outer_interface {
// phan khai bao code
interface nested_interface {
// phan khai bao code
}
}
class ten_lop{
// phan code
interface nested_interface {
// phan khai bao code
}
}
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.
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ó, 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 Hoclaptrinh{
class HoclaptrinhTeam{
}
}
Unpublished comment
Viết câu trả lời