匿名内部类是什么?如何访问在其外面定义的变量?
使用的形参为何要为final?
为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。
故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。
匿名内部类如何初始化?
一般都是利用构造器来完成某个实例的初始化工作的,但是匿名内部类是没有构造器的。
使用构造代码块!利用构造代码块能够达到为匿名内部类创建一个构造器的效果
注意:
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
2、匿名内部类中是不能定义构造函数的。
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。