黑马程序员技术交流社区

标题: 匿名创建线程对象的问题 [打印本页]

作者: lwj123    时间: 2015-2-10 17:20
标题: 匿名创建线程对象的问题
new Thread() {// 不会报错
            public void run() {
                System.out.println("...");
            }
}.start();
匿名方式创建线程,但是我记得老毕说的是,使用匿名方式创建的应该是接口或者是抽象类
格式:
new 接口或者抽象类(){
          //覆写方法
}

问题:但是上面的创建实例Thread是普通的类而已啊,并不是我们所说的接口或者是抽象类,为什么也可以这样做?


作者: 零点Crazy    时间: 2015-2-10 17:29
这个你就不要纠结了,我查了下Java文档,Thread()类是我们创建线程时要写的, 必须覆盖其run()方法,其用法和抽象类和接口类似吧,这样使用在特定的情况比较方便一些,毕老师的意思应该是大部分情况下,不用太纠结这个,只要会用就好了
作者: ㏒假™面具    时间: 2015-2-10 18:14
毕老师说的是匿名内部类的前提是 继承或实现一个外部类或者接口! 匿名内部类是一个子类对象!
作者: ㏒假™面具    时间: 2015-2-10 20:53
㏒假™面具 发表于 2015-2-10 18:14
毕老师说的是匿名内部类的前提是 继承或实现一个外部类或者接口! 匿名内部类是一个子类对象! ...
  1. new Thread() {// 不会报错
  2.             public void run() {
  3.                 System.out.println("...");
  4.             }
  5. }
复制代码

我的理解是这段代码就不是一个类,而是一个对象。
  1. Thread t = new Thread() {// 不会报错
  2.             public void run() {
  3.                 System.out.println("...");
  4.             }
  5. }
复制代码

你可以试试这样写会不会报错!
作者: 许慎誉    时间: 2015-2-10 21:24
匿名内部类就是内部类的简化写法。
前提:存在一个类或者接口(这里的类可以是具体类也可以是抽象类)
格式:new 类名或者接口名() {重写方法;}
本质:是一个继承了类或者实现了接口的子类匿名对象

作者: 马铃薯    时间: 2015-2-10 22:15
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2