黑马程序员技术交流社区
标题:
关于匿名内部类的使用
[打印本页]
作者:
LL111
时间:
2019-3-30 13:03
标题:
关于匿名内部类的使用
匿名内部类是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。
开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,
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为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼。同样它的缺点就是不能多次使用,因为你没有给它命名。如果想要多次使用就不建议使用匿名内部类了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2