Lớp lồng nhau (Inner Class) là gì? Các kiểu của lớp lồng nhau trong Java | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Lớp lồng nhau (Inner Class) là gì? Các kiểu của lớp lồng nhau trong Java

Chia sẻ kiến thức 03/03/2022

Trong lập trình, hẳn không ít lần bạn sử dụng lớp lồng nhau (Inner Class) để nhóm các lớp và các interface lại một nơi nhằm giúp cho việc code trở nên dễ đọc và bảo trì nhanh chóng hơn. Vậy lớp lồng nhau (Inner Class) là gì? Và có các kiểu lớp lồng nhau nào trong Java. 

>> Khóa học lập trình cơ bản

>> Lập trình hướng đối tượng (bằng Java)

1. Lớp lồng nhau (Inner Class) là gì?

Lớp lồng nhau (Inner Class) là một lớp được khai báo trong lớp hoặc interface khác. 

Ngoài ra, bạn cũng có thể hiểu khái niệm này như sau: lớp bên trong là thành viên của lớp với thành viên là các biến và phương thức. Trong lớp lồng nhau, các lớp thành viên được gọi là lớp cấp cao nhất hoặc lớp ngoài. Một lớp cấp cao nhất có thể chứa bất kỳ số lượng các lớp bên trong.

Lớp lồng nhau trong Java
Lớp lồng nhau trong Java

Cú pháp của inner class trong java: 

class Java_Outer_class{  

    //code  

    class Java_Inner_class{  

        //code  

    }  

}  

Lớp lồng nhau được chia làm hai loại chính là: tĩnh và không tĩnh. Trong đó, các lớp lồng nhau tĩnh được truy cập bằng cách sử dụng tên lớp kèm theo: OuterClass.StaticNestedClass. 

Để tạo một đối tượng cho lớp lồng nhau tĩnh, bạn có thể sử dụng cú pháp này:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

  • Để khởi tạo một lớp bên trong, bạn phải khởi tạo lớp bên ngoài với cú pháp này:

OuterClass outerObject = new OuterClass()

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

>>> Xem thêm: 10 Lý do hàng đầu để học JavaScript làm ngôn ngữ lập trình nền tảng

2. Các kiểu lớp lồng nhau trong Java

Có 4 kiểu lớp lồng nhau trong Java gồm: nested Inner Class, local Inner class, static Inner class và anonymous Inner class.

2.1. Nested Inner Class

Nested Inner Class nghĩa là lớp bên trong có thể truy cập các biến thể hiện khác của lớp bên ngoài, ngay cả khi chúng được khai báo là private. Bạn có thể sử dụng bất kỳ công cụ sửa đổi quyền truy cập nào cho lớp bên trong lồng nhau bao gồm: công khai, riêng tư, bảo vệ hoặc mặc định.

2.2. Local Inner class

Local Inner class là kiểu lớp lồng nhau cho phép bạn khai báo một lớp bên trong một thân phương thức sẽ thuộc kiểu cục bộ. 

Phạm vi của lớp bên trong sẽ bị hạn chế trong phương thức, tương tự như các biến cục bộ. Vậy nên, bạn chỉ có thể khởi tạo một lớp bên trong cục bộ bên trong phương thức mà lớp bên trong được định nghĩa. Chúng ta không thể khai báo Method Local Class là private, protected, static và transient nhưng lại có thể khai báo nó dưới dạng trừu tượng và cuối cùng, nhưng không phải cả hai cùng một lúc.

Local Inner Class
Local Inner Class

>>> Xem thêm: Sự khác biệt chính giữa JavaScript và Python bạn đã biết?

2.3. Static Inner class

Static Inner class là một lớp lồng nhau tĩnh hoạt động như một thành viên tĩnh của lớp bên ngoài. Theo đó, bạn có thể truy cập nó mà không cần khởi tạo lớp bên ngoài với sự trợ giúp của phương thức tĩnh.

Về mặt kỹ thuật, các lớp Static Inner không phải là một lớp lồng nhau trong Java. Tương tự như các thành viên tĩnh, một lớp lồng nhau tĩnh không thể truy cập các biến cá thể và phương thức của lớp bên ngoài.

2.4. Anonymous Inner class

Anonymous Inner class là lớp lồng nhau mang tính ẩn danh, có thể hiểu là  lớp bên trong được khai báo mà không có tên. Nhờ vậy, mà bạn có thể tạo mã ngắn gọn hơn. 

Nói chung, chúng được sử dụng khi có nhu cầu ghi đè phương thức của một lớp hoặc một giao diện. Ngoài ra, bạn cũng có thể sử dụng chúng nếu bạn chỉ cần sử dụng một lớp cục bộ một lần. Chúng tương tự như các lớp bên trong cục bộ nhưng không có tên.

Bài viết trên đây, FUNiX đã giới thiệu đến bạn các kiến thức về lớp lồng nhau (Inner Class) là gì? Các kiểu của lớp lồng nhau trong Java. Hy vọng, nội dung này sẽ mang lại hữu ích cho bạn. Đặc biệt, đừng quên tham khảo các khóa học lập trình tại funix.edu.vn để nhanh chóng trở thành một lập trình viên chuyên nghiệp nhé!

>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:

>>> Xem thêm bài viết:

Ngôn ngữ lập trình Java: Hướng dẫn cho người mới bắt đầu về Java

Có nên lập trình game bằng C++, C#, Java và JavaScript?

Hỏi đáp về ngôn ngữ JavaScript cùng lập trình viên

Những trung tâm dạy học lập trình java trực tuyến trong vòng 6 tháng

Cách sử dụng Package và Collection có sẵn trong Java

Phạm Thị Thanh Ngọc

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại