关于匿名内部类的问题
2016-12-06 20:28
239 查看
匿名内部类是什么?如何访问在其外面定义的变量?
使用的形参为何要为final?
为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。
故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。
匿名内部类如何初始化?
一般都是利用构造器来完成某个实例的初始化工作的,但是匿名内部类是没有构造器的。
使用构造代码块!利用构造代码块能够达到为匿名内部类创建一个构造器的效果
注意:
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
2、匿名内部类中是不能定义构造函数的。
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
使用的形参为何要为final?
为了避免引用值发生改变,例如被外部类的方法修改等,而导致内部类得到的值不一致,于是用final来让该引用不可改变。
故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。
匿名内部类如何初始化?
一般都是利用构造器来完成某个实例的初始化工作的,但是匿名内部类是没有构造器的。
使用构造代码块!利用构造代码块能够达到为匿名内部类创建一个构造器的效果
注意:
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
2、匿名内部类中是不能定义构造函数的。
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
相关文章推荐
- elasticsearch使用river同步mysql数据
- aliyun阿里云Maven仓库镜像地址
- 实时操作系统内核的任务调度点
- 程序员的走与留?
- 希尔排序
- MPAndroidChart添加自定义样式
- web前端之锋利的jQuery七:jQuery表格应用、其他应用
- vmstat详解
- springMVC学习笔记(七) ---- json
- 4-19 Count Connected Components(DFS的栈实现+邻接表存图)
- 什么是产品运营?
- python 实践 九九乘法表
- codeforces 699C(广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛)
- hdu2072 单词数
- 圆上的整数点
- C语言动态函数调用
- 彻底搞懂HashMap,HashTable,ConcurrentHashMap之关联.
- Ubuntu 16.04 下快速搭建 LNMP环境
- c++ 数据结构 队列应用之电路布线
- __VA_ARGS__用法