java基础知识补漏(2)---匿名内部类
2012-06-28 14:29
253 查看
昨天在看mars的视频的时候,看到他提到匿名内部类,竟然不知,倍感羞耻,所以百度+google,总算瞧出了个一二三:
匿名内部类
1、定义:顾名思义,就是一个类里面,定义了一个内部类,而该类是没有名字的,其实严格应该这么说:一个类里面有一个没有名字的“类"。
在android里面应用较多,声明方式更像是new一个接口或对象的感觉,但是我们知道接口不能实例化,所以我们就得new一个实现
了接口方法的对象出来。
2、作用:①少定义一个类②函数回调,经常被作为一个对象参数传入
3、声明:new <类或接口><类主体>
4、与new对象的不同:对象的new是这样:Ojcect a=new A(),而内部类是:new A(){方法1;方法2...}
5、举例说明:<以下两段代码其实效果一样>
6、匿名内部类使用条件:
·只用到类的一个实例。
·类在定义后马上用到。
·类非常小(SUN推荐是在4行代码以下)
·给类命名并不会导致你的代码更容易被理解。
7、在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
匿名内部类
1、定义:顾名思义,就是一个类里面,定义了一个内部类,而该类是没有名字的,其实严格应该这么说:一个类里面有一个没有名字的“类"。
在android里面应用较多,声明方式更像是new一个接口或对象的感觉,但是我们知道接口不能实例化,所以我们就得new一个实现
了接口方法的对象出来。
2、作用:①少定义一个类②函数回调,经常被作为一个对象参数传入
3、声明:new <类或接口><类主体>
4、与new对象的不同:对象的new是这样:Ojcect a=new A(),而内部类是:new A(){方法1;方法2...}
5、举例说明:<以下两段代码其实效果一样>
button.setOnClickListener(listener ); private View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { String phonenum = phoneEditText.getText().toString(); Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phonenum)); startActivity(intent); } };// 在这里需要一个分号
button.setOnClickListener(new ButtonListener()); private final class ButtonListener implements View.OnClickListener { public void onClick(View v) { EditText mobileText = (EditText)findViewById(R.id.mobile); String mobile = mobileText.getText().toString(); Intent intent = new Intent(); intent.setAction("android.intent.action.CALL"); intent.setData(Uri.parse("tel:"+ mobile)); startActivity(intent); } }
6、匿名内部类使用条件:
·只用到类的一个实例。
·类在定义后马上用到。
·类非常小(SUN推荐是在4行代码以下)
·给类命名并不会导致你的代码更容易被理解。
7、在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
相关文章推荐
- Java基础知识之系统命令调用、序列化、JDO、匿名内部类
- java基础知识补漏(1)---内部类,重写、重载
- Java基础知识之系统命令调用、序列化、JDO、匿名内部类
- 包、修饰符、内部类、匿名内部类(java基础知识十)
- Java基础知识之系统命令调用、序列化、JDO、匿名内部类
- 黑马程序员——Java 基础:匿名内部类
- Java基础知识-面向对象-内部类
- IT十八掌作业_java基础第七天_匿名内部类、异常、包和jar
- JAVA基础——内部类、匿名内部类
- Java基础知识——内部类
- 黑马程序员——java基础:内部类与匿名内部类
- java基础之:匿名内部类
- Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量
- android学习必备java基础知识——内部类
- java基础:熟悉3种内部类的写法,重点匿名内部类的使用
- Java基础学习总结(69)——匿名内部类与Lambda表达式
- 黑马程序员——JAVA基础之内部类,匿名内部类
- java基础15 内部类(成员内部类、局部内部类)和匿名内部类
- Java 基础(13)—— 匿名内部类
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)