java学习之匿名内部类
来源:互联网 发布:水仙花数java 编辑:程序博客网 时间:2024/06/04 18:26
匿名内部类:就是内部类的简写格式。
前提:
内部类必须继承或者实现一个外部类或者接口
下图中5-11行定义了一个匿名内部类,该类是Object类的一个子类。由于java中有一个最顶级的类Object,
其他类都隐式继承自这个类,所以这样定义没问题。然后在该类中实现show()方法,并在末尾调用。
但是14-26行的定义方式和调用方式就会编译出错。因为第14行的定义方式表示new Object()这个匿名子类对象
已经向上转型为Object类型了,一转型就隐藏了它的子类型,并限定了特有方法的使用,这就是多态。
编译时看左边,由于Object这个类中找不到函数show1()和show2(),所以编译时就会报错。
class Outer{void method(){new Object(){void show(){System.out.println("show run...");}}.show();/*Object obj = new Object(){void show1(){System.out.println("show1 run..");}void show2(){System.out.println("show2 run...");}}obj.show1();obj.show2();*/}}public class InnerClassDemo5 {public static void main(String[] args) {new Outer().method();}}
匿名内部类其实就是匿名子类对象
通常的使用场景之一:
当函数参数是接口类型时,而且接口中的方法不超过三个。
可以用匿名内部类作为实际参数进行传递。
interface Inter{public abstract void show1();public abstract void show2();}public class InnerClassDemo4 {public static void main(String[] args){/*通常的使用场景之一: 当函数参数是接口类型时,而且接口中的方法不超过三个。 可以用匿名内部类作为实际参数进行传递。*/show(new Inter(){public void show1(){System.out.println("Inner show1 run");}public void show2(){System.out.println("Inner show2 run");}});}public static void show(Inter in){in.show1();in.show2();}}
0 0
- java学习之路----内部类之---匿名内部类
- java学习之匿名内部类
- java内部类之匿名内部类
- Java内部类之匿名内部类
- Java学习--匿名内部类
- java 匿名内部类学习
- Java匿名内部类学习
- java 之匿名内部类
- Java之匿名内部类
- Java之匿名内部类
- java之匿名内部类
- java学习之匿名内部类与包装类
- java学习笔记(六)之匿名内部类
- 黑马程序员 【】java学习之路——内部类和匿名内部类简介
- Java内部类以及匿名内部类学习总结
- java内部类之私有内部类、局部内部类、匿名内部类
- java内部类回顾之匿名内部类
- 匿名内部类学习笔记InnerClassDemo4.java
- 摘录和收藏
- Install Me
- Cannotload php5apache2_4.dll
- 通过Handler实现gif图的效果
- python定义静态方法
- java学习之匿名内部类
- TCP数据包格式
- 邓白氏 申请经验
- IDF实验室WriteUp
- Log4Net使用详解(续)
- 修改ubuntu系统的时间
- java获取当前日期是星期几
- C++ Builder如何使用蓝牙打印机
- Interprocess Communication Affects Application Response Time