构造函数Thread()之后的代码如何工作?

时间:2015-03-26 16:28:28

标签: java

Thread timer=new Thread(){
     public void run(){
         ...
     }

};

这里我们使用构造函数初始化一个对象。但与此同时,还有一些与构造函数对应的代码。

在调用构造函数 body 时,似乎正在定义它。不应该在Thread{}区块内吗?

3 个答案:

答案 0 :(得分:1)

在这里,您要声明匿名类,您在运行时提供run方法的实现。当你有意在单个地方使用实现时,它变得有利于你进行子类化

它与使用构造函数初始化对象无关。

答案 1 :(得分:0)

您可以创建一个新的类扩展Thread.class。

    class MyThread extends Thread{
    String name;
    public MyThread(String name){
        this.name = name;
    }

    @Override
    public void run() {
        super.run();
    }

使用:

    MyThread thread = new MyThread("hello");
    thread.start();

答案 2 :(得分:0)

基本上你用新的Class(){}创建的是一个扩展了Class的子类;这是一个例子

Test.java

    public static void main(String args[]) {
    Tester tester = new Tester() {
        @Override
        public void TestingPurposes() {
            super.TestingPurposes();
        }
    };
}

Tester.java

public class Tester {

public void TestingPurposes(){/*empty*/}

}

它基本上意味着创建扩展Tester的Child.java。

    public class Child extends Tester {
    @Override
    public void TestingPurposes() {
        super.TestingPurposes();
    }
}

,主要方法应该是,

Tester tester = new Child();