什么是嵌套类和内部类?
可以在一个类内部定义另一个类。 该类称为“嵌套类”(nested classes ),有两种类型:静态嵌套类和非静态嵌套类。 静态嵌套类很少使用。
第一个是静态嵌套类(静态内部类)。
对于非私有,该属性包括:
1 )在静态嵌套类内部,您无法访问外部类的非静态成员,但此内部类允许直接访问外部类的所有静态成员。
2 )外部类访问内部类的成员是特殊的,不能直接访问,但静态嵌套中的所有成员和方法默认为静态,因此可以通过创建内部类对象进行访问
3、内部静态类inner只能在类Outer04的范围内看到。
在Outer04类中,可以以内部类内部类引用(=new外部类.内部类实例)的形式创建对象访问。
在其他类(InnerClassDemo04 )中引用时:
例如:
需要通过。 外部类.内部类内部类引用=new外部类.内部类实例(); 的形式创建对象访问
4 )如果内部类的成员变量是静态的,则内部类必须是静态的
5 )静态内部类可以有非静态成员,但必须创建对象访问权限。 对于内部类的静态成员,直接使用外部类.内部类
姓名.访问。
第二,最重要的是非静态嵌套类
也就是说,被称为内部类(inner ) (对修饰符,如公共或私有)没有任何影响,同时这些修饰符似乎也不影响内部类的变量或方法。 其中inner类又可分为三类:
其一,由一个类(外部类)直接定义的内部类;成员内部类);
对于非私有,该属性包括:
1 )此内部类可以直接访问外部类的所有成员,外部类和外部类的其他内部类可以通过对象访问该内部类的所有成员(包括private )。
2、外部类访问内部类:
在外部(非外部类)使用内部类的实例化对象时:
例如:
需要通过。 外部类.内部类内部类对象=外部类实例. new内部类实例(); 的形式创建对象访问
其二,由一种方法(外部类方法)定义的内部类;局部内部类);
对于非私有,该属性包括:
1、方法定义的内部类可以直接访问外部类中的各个成员,但要访问方法中的参数,必须在参数中添加final关键字声明
2、外部类方法。 外部类和外部类的其他内部类可以通过对象访问该内部类的所有成员(包括private )。
3、从外部绝对看不见
其三,匿名内部类。
使用匿名内部类的特点:1.只能使用一次2 .接口或抽象类都可以实现为匿名内部类,多用于实现接口回调。 (参数是接口类型,不需要定义多个类重写方法,而是在匿名内部类中完成参数传递) (如果接口方法小于或等于3 )。
使用匿名内部类的好处:可以省略一个类的标记。
已知使用: 1,Thread类的匿名内部类实现。 2,Runnable接口的匿名内部类实现。 3、动态连接寻呼链接地址。