一、成员内部类:
类修饰符: public protected default private ,abstract final
方法和属性; publicprotected default private ,abstract (不包含属性) fainl
内部内访问外部类:ii, this.i, B.i(static),A.this.i , A.i(static) 没有是否是static的限制。A.test()(static), A.this.test()。
外部类访问内部类:B b = new B(); b.i , bi.test();
在静态方法中访问内部类:A a =new A(); Bb =a.new B();
二、局部内部类: 类修饰符:defalut ,abstract , final
方法和属性: public protected default private 、abstract(不包含属性)、final
2—1:方法是static :只能访问static或者是final的成员变量,static 方法
2—2:方法不是static :可以访问任意成员变量,任意的方法
2—3:如果访问局部变量:这个变量一定要是final意思就是说一定要是常量,只能在方法内部被调用
三、静态内部来:
在成员内部类基础上加了static 的关键字
类修饰符:publicprotected default private (abstract | final)
方法和属性:publicprotected default private ,abstract(不包含属性)final
内部类访问外部类:他只能访问外部的 static 方法和 static 变量
外部类访问内部类:和成员内部类是一样
在另外一类里面:调用静态内部类A.B b =new A.B();
四、匿名内部类:
没有类名,一般实现接口,继承抽象类或者继承一般类
方法和属性: public protected default private ,abstract(不包含属性) final
但是一般不在接口的基础上添加方法,也不在类的基础上添加方法,最多只重写类里面的方法。
只能在外部类中被条用