Một class được khai báo bên trong một class nhưng bên ngoài method được gọi là member inner class.
Chúng ta có thể khởi tạo member Inner class theo hai cách
- Gọi bên trong class
- Gọi bên ngoài class
Quy tắc cho Inner Class
- Outer class (class chứa inner class) có thể khởi tạo bao nhiêu đối tượng inner class tùy ý, bên trong code của nó.
- Nếu inner class là public & containing class cũng public, thì code trong class không liên quan cũng có thể tạo instance của inner class.
- Không có inner class objects nào được khởi tạo tự động cùng với outer class object.
- Nếu inner class là static, thì static inner class có thể khởi tạo mà không cần outer class instance. Ngược lại, inner class object phải liên kết với một instance của outer class.
- Outer class có thể gọi thậm chí private methods của inner class.
Member Inner Class được gọi bên trong class
Trong ví dụ dưới, chúng ta gọi phương thức của member inner class từ phương thức display() của OuterClass.
Ví dụ
public class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: " + value);
}
}
void display() {
InnerClass ic = new InnerClass();
ic.show();
}
public static void main(String args[]){
OuterClass oc = new OuterClass();
oc.display();
}
}Value is: 20
Member Inner Class được gọi bên ngoài class
Trong ví dụ dưới, chúng ta gọi phương thức show() của InnerClass từ bên ngoài OuterClass tức là class Test.
Ví dụ
class OuterClass {
private int value = 20;
class InnerClass {
void show() {
System.out.println("Value is: "+ value);
}
}
}
public class Test {
public static void main(String args[]) {
OuterClass obj = new OuterClass();
OuterClass.InnerClass in = obj.new InnerClass();
in.show();
}
}Kết quả
Value is: 20