I, Nested class
- Java/Kotlin cho phép bạn định nghĩa 1 class nằm trong 1 class khác.
- Những class nằm trong 1 class khác gọi là
nested class
. - Nested class chia làm 2 loại:
static nested class
vàinner class (non-static nested class)
.
1 | class OuterClass { |
II, Inner class
- Bởi vì inner class liên kết với 1 instance của outer class nên nó có thể truy cập các member khác của outer class ngay cả khi chúng khai báo với
private
. - Vì nó liên kết với 1 instance của outer class nên nó không thể chứa bất kì
static member
nào.
1 | public class OuterClass { |
- Một instance của inner class chỉ có thể tồn tại khi có 1 outer class.
1 | OuterClass outerClass = new OuterClass(); |
III, Static nested class
- Giống như static member khác, static nested class liên kết với class chứa nó (không phải liên kết với instance).
- Do đó, nó không thể sử dụng các member của class chứa nó.
- static nested class có behavior giống như
top-level class
. - Bạn có thể khởi tạo nó mà không cần đến instance của class chứa nó:
1 | OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); |