概述
匿名内部类通常用于简化代码的编写,
使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
之前对于new了一个接口或者抽象类不是很理解,
现在知道:
因为没有名字,也就没有构造函数,
所以只能通过显示调用父类函数创建匿名内部类。
还有关于匿名内部类使用外部类变量作为形参传入时需要用final修饰,
在网上看了许多网友的理解,各有其说法,但关键我的
理解是在于final是为了保证变量在外部类和内部类的不可变,
至于是因为机制的问题还是其他,暂不做过多追究
以及关于本文参考来源Nerxious的播客中
“匿名内部类只能实例化一次”的说法不是很理解
匿名内部类的产生:如果不使用匿名内部类来实现抽象方法,需要单独写一个类向上转型实现抽象方法,比较麻烦
例子:
运行结果:eat something
这里就为了实现抽象类里的抽象方法而专门写了一个Child类。
为了简化代码书写,可以使用匿名内部类
例子:
运行结果:eat something
我们直接将抽象类Person中的方法在大括号中实现了
这样便可以省略一个类的书写
并且,匿名内部类还能用于接口上,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现
运行结果:eat something
最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口
Thread类的匿名内部类实现
例子:
运行结果:1 2 3 4 5
Runnable接口的匿名内部类实现
例子:
运行结果:1 2 3 4 5
最后
以上就是儒雅小鸭子为你收集整理的匿名内部类的使用的全部内容,希望文章能够帮你解决匿名内部类的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复