我来说说吧,匿名内部类其实就是那个类的子类。
这里举例,就拿多线程说事吧,多线程创建有两种方式,一个是继承Thread类,重写run方法,一个是实现Runnable接口,重写run方法,这里就拿第一种创建方式说吧,我们平时想要开启多线程是不是要定义一个类去继承Thread类,然后在那个Thread的子类中去重写run方法。
而我们用匿名内部类就非常简便了:
new Thread(){
public void run(){
}
}
所以说匿名内部类其实是它的子类。 明白了吧,接口也是一样,不过要注意的是,如果一个接口中方法超过三个,就没必要用匿名内部类了,三个以下用匿名内部类就很方便了,因为接口中的方法都是抽象的,里面抽象的方法过多,我们都要对其进行重写,所以这个时候再用匿名内部类的话阅读性会非常差。 |