匿名内部类的使用

来源:互联网 发布:石桥铺数据恢复 编辑:程序博客网 时间:2024/05/16 05:59

匿名内部类通常用于简化代码的编写,

使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

之前对于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

0 0
原创粉丝点击