Java匿名内部类学习
来源:互联网 发布:淘宝lol皮肤在哪买 编辑:程序博客网 时间:2024/06/05 23:52
Java匿名内部类
匿名内部类基本知识与用法
匿名内部类,是一个没有类名的类,通常用在当一个继承父类或者实现接口的类只需要用一次的时候,用来简化代码编写。总结一下匿名内部类有几个基本点:
*继承父类或者实现接口或者实现抽象类
*匿名内部类用new来生成一个继承父类的对象的引用,因此可以用来作为参参数传递
*匿名内部类只能使用一次利用代码来测试继承父类、实现接口、实现抽象类的用法
abstract class afather { public abstract void eat();}class father { public void eat(){ System.out.println("eat person"); }}interface ifather{ public void eat();}class Child extends father { public void eat() { System.out.println("eat child"); }}public class Test { public static void main(String[] args) { //非匿名内部类的用法 father fc = new Child(); fc.eat(); //继承父类的匿名内部类 father f = new father(){ public void eat(){ System.out.println("eat nonameinnerclass"); } }; f.eat(); //实现抽象类的匿名内部类 afather af = new afather(){ public void eat(){ System.out.println("eat afather"); } }; af.eat(); //实现接口的匿名内部类 ifather ifa = new ifather(){ public void eat(){ System.out.println("eat interface"); } }; ifa.eat(); }}
运行结果:
eat child
eat nonameinnerclass
eat afather
eat interface
- 利用代码测试匿名内部类作为参数传递
abstract class afathers { public abstract void eat();}class others{ public void getafather(afathers a){ a.eat(); }}public class Test2 { public static void main(String[] args) { // 相当于传递了一个实现afathers类的子类的引用 new others().getafather( new afathers(){ public void eat(){ System.out.println("eat"); } } ); }}
一些注意事项
http://blog.csdn.net/chenssy/article/details/13170015(http://blog.csdn.net/chenssy/article/details/13170015)
在使用匿名内部类的过程中,我们需要注意如下几点:
1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
2、匿名内部类中是不能定义构造函数的。
3、匿名内部类中不能存在任何的静态成员变量和静态方法。
4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。
2.内部类使用参数必须是final类型
原因:内部类并不是直接使用的外部的参数,而是编译时有自己单独的.class文件,也就是说它是拷贝了一份参数,为了避免参数改变,造成数据不一致,要求数据必须是final类型
参考:[http://android.blog.51cto.com/268543/384844]
3.匿名内部类初始化
匿名内部类没有构造器,一般使用静态代码块来完成初始化操作。
- Java学习--匿名内部类
- java 匿名内部类学习
- Java匿名内部类学习
- java学习之路----内部类之---匿名内部类
- Java内部类以及匿名内部类学习总结
- 匿名内部类学习笔记InnerClassDemo4.java
- 匿名内部类学习笔记InnerClassTest.java
- JAVA匿名内部类的学习
- JAVA匿名内部类(学习笔记)
- java学习之匿名内部类
- java学习日记_50:匿名内部类
- JAVA学习——匿名内部类
- java学习(9) 匿名内部类
- java匿名内部类 学习笔记
- Java学习笔记-匿名内部类
- 匿名内部类学习
- JAVA匿名内部类
- java 匿名内部类
- 最短路
- 递推递归练习H
- 新素数2
- Android中Canvas绘图基础详解
- ℃江让您从精通到入门:20步,写出一个详细的适配器(Adapter)
- Java匿名内部类学习
- Python Web开发企业直通班
- json-lib 的maven dependency
- XML:XPth路径设置(二)
- sublime插件安装
- 单片机两大延时方法总结
- spfa算法
- Java设计模式例子
- begin主题4.2破解 知更鸟 begin4.2最新下载地址