匿名内部类是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。
开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,
1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法
我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快 捷方式。
但是,使用匿名内部类有一个前提,那就是匿名内部类必须继承一个父类或者实现一个父接口。
今天上午复习了关于多线程的使用,其中在测试类中就有匿名内部类的使用。多线程使用匿名内部类的具体代码如下:
package com.itheima01;
public class test01 {
public static void main(String[] args) throws InterruptedException {
new Thread( new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": 播放背景音乐。");
}
}
},"线程一").start();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": 显示画面。");
}
}
},"线程二");
}
}
使用匿名内部类的优缺点:多线程使用匿名内部类不用再创建类,可以直接在测试类中创建匿名内部类,省去了我们重新创建实现类的步骤。匿名内部类就是没有名字的内部类。这是Java为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼。同样它的缺点就是不能多次使用,因为你没有给它命名。如果想要多次使用就不建议使用匿名内部类了。
|
|