静态内部类:

一、用static修饰的内部类,称为静态内部类,彻底属于外部类自己,不属于外部类某一个对象java

二、static关键字的做用是把修饰的成员变成类相关,而不是实例相关对象

三、静态内部类能够包含静态成员,也能够包含非静态成员blog

四、静态类内部不能够访问外部类的实例成员,只能访问外部类的类成员,即便是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员编译

五、外部类不能够定义为静态类,Java中静态类只有一种,那就是静态内部类,顶级类不能用static 修饰class

public class StaticClassW{
	private int a=5;
	private static int b=10;
	
	private static class StaticClassN{
		public static int c=20;
		public int d=30;
		public static void print(){
			//-下面代码会报错,静态内部类不能访问外部类实例成员
			//System.out.println(a);

			//-静态内部类只能够访问外部类类成员
			System.out.println(b);
		}

		public void printA(){
			System.out.println(d);
		}
	}

	private static class StaticClassNN{
		public int d=40;

		public void printA(){
			System.out.println(d);
		}
	}

	public static void main(String[] args){
		//-要想访问静态内部类的实例成员,需先建立实例对象,才能够调用,由于实例成员是属于实例的
		StaticClassN sc=new StaticClassN();
		sc.printA();

		StaticClassNN sc1=new StaticClassNN();
		sc1.printA();
		
		//-访问静态内部类的类成员,能够直接由该类访问,由于类成员是属于类的
		StaticClassN.print();
		System.out.println(StaticClassN.c);

		//-要想访问静态内部类的实例成员,需先建立实例对象,才能够调用,由于实例成员是属于实例的,下面代码编译就会报错
		//StaticClassN.printA();
		
	}
}

 编译结果:方法

 运行结果:im

注:编译结果中$1.class为匿名类static

相关文章
相关标签/搜索