VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các khái niệm Java OOPs Java String Xử Lý Ngoại Lệ

Các lớp lồng nhau

Inner class là gì? Member inner class Anonymous inner class Local inner class Static nested class Nested interface
Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Nested Interface trong java


Static nested class trong java
Thread trong java

Nội dung chính

  • Định nghĩa
    • Khai báo nested interface bên trong interface
    • Khai báo nested interface bên trong class
    • Ví dụ về nested interface được khai báo bên trong interface
    • Code nội bộ được tạo ra bởi trình biên dịch java cho interface lồng nhau Message
    • Ví dụ về nested interface được khai báo bên trong lớp
    • Chúng ta có thể định nghĩa một lớp bên trong interface?

Định nghĩa

Một interface được khai báo trong một interface hoặc lớp khác được gọi là interface lồng nhau hay nested interface trong java. Các interface lồng nhau được sử dụng để nhóm các interface liên quan để chúng có thể dễ dàng được bảo trì. Interface lồng nhau phải được bao bọc bên ngoài bởi interface hoặc lớp. Nó không thể truy cập trực tiếp.

Những điểm cần nhớ đôi với các interface lồng nhau

Có một số điểm cần lưu ý bởi lập trình java về interface nồng nhau.

  • Interface lồng nhau (Nested interface) phải public nếu nó được khai báo bên trong interface nhưng nó có thể có bất kỳ access modifier nào nếu khai báo trong lớp.
  • Interface lồng nhau (Nested interface) được khai báo static một cách hiển nhiên.

Khai báo nested interface bên trong interface

interface interface_name {
    // code
    interface nested_interface_name {
        // code
    }
}

Khai báo nested interface bên trong class

class class_name {
    // code
    interface nested_interface_name {
        // code
    }
}

Ví dụ về nested interface được khai báo bên trong interface

Trong ví dụ này, chúng ta sẽ học cách khai báo interface lồng nhau và cách chúng ta có thể truy cập nó.

interface Showable {
    void show();

    interface Message {
        void msg();
    }
}

class TestNestedInterface1 implements Showable.Message {
    public void msg() {
        System.out.println("Hello nested interface");
    }

    public static void main(String args[]) {
        Showable.Message message = new TestNestedInterface1(); // upcasting
        message.msg();
    }
}

Output:

hello nested interface

Như bạn thấy trong ví dụ trên, chúng ta truy cập interface Message bằng interface Showable bên ngoài của nó vì nó không thể được truy cập trực tiếp. Trong khuôn khổ collection, hệ thống sun microsystem đã cung cấp một nested interface là Entry. Entry là subinterface của Map, nghĩa là được truy cập bởi Map.Entry.

Code nội bộ được tạo ra bởi trình biên dịch java cho interface lồng nhau Message

Trình biên dịch java tạo ra interface public và static như thể hiện dưới đây:

public static interface Showable$Message {
    public abstract void msg();
}

Ví dụ về nested interface được khai báo bên trong lớp

Hãy xem chúng ta có thể định nghĩa một interface bên trong lớp như thế nào và chúng ta có thể truy cập nó như thế nào.

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

public class TestNestedInterface2 implements A.Message {
    public void msg() {
        System.out.println("Hello nested interface");
    }

    public static void main(String args[]) {
        A.Message message = new TestNestedInterface2();// upcasting
        message.msg();
    }
}

Output:

hello nested interface

Chúng ta có thể định nghĩa một lớp bên trong interface?

Có, Nếu chúng ta xác định một lớp bên trong interface, trình biên dịch java tạo ra một lớp static lồng nhau. Hãy xem chúng ta có thể định nghĩa một lớp trong giao diện như thế nào:

interface M {
    class A {
    }
}

Static nested class trong java
Thread trong java

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiPseudo Class trong CSSSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml