匿名内部类
来源:互联网 发布:python 数组加减 编辑:程序博客网 时间:2024/06/10 02:44
匿名内部类一般用于比较简单,且仅在声明处使用一次的次,使用匿名类可以使代码更加简洁,又可以避免类名冲突。在你阅读Android代码中经常遇到,匿名类是基础中的基础,因此,很有必要了解它。
形式为:
new <类或接口> <类的主体>实现方式:
1、继承一个类,重写其方法。
2、实现一个或者多个接口。
实例1:不使用匿名内部类来实现抽象方法
abstract class Animal{//抽象动物类public abstract void eat();//抽象方法}class Dog extends Animal{//狗继承动物public void eat(){//实现抽象方法System.out.println("狗在吃屎。。。");}} public class AnonymousClassDemo {public static void main(String[] args) {Animal dog=new Dog();//向上转型为Animal类的引用dog.eat();}}运行结果:
狗在吃屎。。。可以看到,我们用Dog继承了Animal类,然后实现了Dog的一个实例,将其向上转型为Animal类的引用。
但是,如果此处的Dog类只使用一次,那么将其编写为独立的一个类岂不是很麻烦?
这个时候就引入了匿名内部类。
实例2:使用匿名内部类来实现抽象方法
abstract class Animal{//抽象动物类public abstract void eat();//抽象方法}public class AnonymousClassDemo{public static void main(String[] args) {Animal dog=new Animal(){//注意这里public void eat(){System.out.println("狗在吃屎。。。");}};//分号dog.eat();}}运行结果:
狗在吃屎。。。
可以看到,我们直接将抽象类Animal中的方法在大括号中实现了
这样便可以省略一个类的书写
并且,匿名内部类还能用于接口上
interface Animal{//动物接口public abstract void eat();//抽象方法}public class AnonymousClassDemo{public static void main(String[] args) {Animal dog=new Animal(){//注意这里public void eat(){System.out.println("狗在吃屎。。。");}};//分号dog.eat();}}运行结果:
狗在吃屎。。。由上面的例子可以看出,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现
最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口
实例4:Thread类的匿名内部类实现
public class AnonymousClassDemo{public static void main(String[] args) {Thread thread=new Thread(){public void run(){for(int i=0;i<=9;i++){System.out.println(i+" ");}}};thread.start();}}
运行结果:
0 1 2 3 4 5 6 7 8 9实例5:Runnable接口的匿名内部类实现
public class AnonymousClassDemo{public static void main(String[] args) {Runnable r=new Runnable(){public void run(){for(int i=0;i<=9;i++){System.out.print(i+" ");}}};Thread thread=new Thread(r);thread.start();}}运行结果:
0 1 2 3 4 5 6 7 8 9
阅读全文
1 0
- 内部类、匿名内部类
- 内部类、匿名内部类
- 内部类,匿名内部类
- 内部类(匿名内部类)
- 内部类 ---匿名内部类
- 内部类,匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类,内部类,匿名内部类
- 匿名内部类,回调...
- 关于匿名内部类
- 匿名内部类
- JAVA匿名内部类
- 返回匿名内部类
- java 匿名内部类
- 匿名类内部类
- JAVA匿名内部类
- shiro框架之会话管理
- 今天写自定一轮播图
- Codeforces Round #449划水报告
- shiro框架之缓存机制
- shiro框架之与Spring集成
- 匿名内部类
- Android Sensor Development
- json--2.对象和数组
- Bootstrap学习笔记 20
- shiro框架之RememberMe(记住我)
- 进度条
- shiro框架之SSL
- Java动态代理、cglib动态代理
- 重磅译制 | 视频更新:牛津大学xDeepMind自然语言处理课程第5讲(上)文本分类