Static Nested Class trong Java




Static Nested Class là gì?

Trong Java, một Static Class được tạo bên trong một lớp thì được gọi là Static Nested Class. Nó có thể truy cập các thành viên dữ liệu và phương thức non-static. Ngoài ra, nó có thể được truy cập bởi tên của Outer Class.

Ví dụ Static Nested Class với phương thức ở dạng non-static

class OuterClassExample {
	static int example = 30;

	static class Inner {
		void printMessage() {
			System.out.println("Gia tri cua bien example la: " + example);
		}
	}

	public static void main(String args[]) {
		OuterClassExample.Inner obj = new OuterClassExample.Inner();
		obj.printMessage();
	}
}

Chạy chương trình Java trên sẽ cho kết quả:

Gia tri cua bien example la: 30

Trong ví dụ này, bạn cần tạo instance của Static Nested Class bởi vì phương thức printMessage() là phương thức dạng non-static. Nhưng bạn không cần tạo đối tượng của Outer Class bởi vì Nested Class là dạng static và các thuộc tính, phương thức hoặc các lớp cũng có thể được truy cập mà không cần sử dụng đối tượng.

Ví dụ Static Nested Class với phương thức ở dạng static

Nếu bạn có các thành viên static bên trong Static Nested Class, thì bạn không cần tạo instance của Static Nested Class mà vẫn có thể truy cập được các thành viên đó. Dưới đây là ví dụ:

class OuterClassExample {
	static int example = 30;

	static class Inner {
		static void printMessage() {
			System.out.println("Gia tri cua bien example la: " + example);
		}
	}

	public static void main(String args[]) {
		OuterClassExample.Inner.printMessage();// khong can tao instance cua static nested class
	}
}

Nó sẽ cho kết quả sau:

Gia tri cua bien example la: 30