A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwj123 金牌黑马   /  2015-2-10 17:20  /  1085 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new Thread() {// 不会报错
            public void run() {
                System.out.println("...");
            }
}.start();
匿名方式创建线程,但是我记得老毕说的是,使用匿名方式创建的应该是接口或者是抽象类
格式:
new 接口或者抽象类(){
          //覆写方法
}

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

6 个回复

倒序浏览
这个你就不要纠结了,我查了下Java文档,Thread()类是我们创建线程时要写的, 必须覆盖其run()方法,其用法和抽象类和接口类似吧,这样使用在特定的情况比较方便一些,毕老师的意思应该是大部分情况下,不用太纠结这个,只要会用就好了
回复 使用道具 举报
毕老师说的是匿名内部类的前提是 继承或实现一个外部类或者接口! 匿名内部类是一个子类对象!

点评

不一定是抽象类吧?  发表于 2015-2-10 20:07
回复 使用道具 举报
㏒假™面具 发表于 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. }
复制代码

你可以试试这样写会不会报错!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
匿名内部类就是内部类的简化写法。
前提:存在一个类或者接口(这里的类可以是具体类也可以是抽象类)
格式:new 类名或者接口名() {重写方法;}
本质:是一个继承了类或者实现了接口的子类匿名对象

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马