JAVA内部类

Java的内部类可以有效解决”多重继承”问题,
java内部类,有:静态内部类,非静态内部类,局部内部类,匿名内部类四种。内部类可以声明为private或protected,普通类只能被赋予public
非静态内部类初始化时,需要外围类对象实例,如:
OuterClass outer=new OuterClass();
outer.new InnerClass().method();
外围类实例也会隐式的传给非静态内部类,因此非静态内部类可以访问外围类所有成员包括私有,但不能使用static修饰非静态内部类成员

静态内部类不需要外围类实例,如:
new OuterClass.InnerClass().method();
静态内部类只能访问外围类的static 成员,也可以显示的在静态内部类使用new OuterClass().field(可以是私有)来手工建立外围类实例引用,但这需要消耗同非静态内部类更多的时间和空间,


匿名类没有类名,也就没有构造方法,所以只能在它们被声明的时候实例化
匿名类和局部类只有在非静态环境中定义的时候才有外围实例,也不能包含静态成员.
如果内部类的每个实例,都需要一个指向外围实例的引用,就要把内部类做成非静态的,否则做成静态的,假设这个内部类在方法内,如果你只需要在一个地方创建实例,并且已经有了一个预置的类型可以说明这个类的特征,就要把它做成匿名类,否则就做成局部内

你可能感兴趣的:(java)