那是一个匿名内部类的声明 也就是说你可以在大括号里面写run方法使thread成为一个可执行线程比如Thread thread = new Thread () //注意这里没有分号 { public void run() { System.out.println("the thread is running"); //在这里写你想处理的内容 }}; ////注意这里的分号 至于为什么要这样做以及匿名内部类的好处(比如方便访问成员变量等)这些就多看看书吧,现在java基础类的书好多啊!~!
public class Test{ class MyThread extends Thread{ public void run(){ //some code here } } public void test(){ Thread thread = new MyThread(); //some other code } }上面这个容易理解些,把匿名类变成了内部类。
class TestAnonymityClass { public static void main(String [] args) { //Ano ano = new Ano(); //1:没有大括号,就是用接口本身,接口是没有构造方法的,所以不能new.
Ano ano = new Ano(){}; //2:有大括号,就是给出了方法体,编译器会自动添加默认的构造方法. ////构造时,因为prt()方法没有方法体,所以也不能构造.编译时报错:要求覆盖方法prt() ////更准确点说应该是:实现方法prt()
//Ano ano = new Ano(){public void prt(){System.out.println(i);}}; //3:实现了接口中的方法.所以构造成功.new成功了.返回一个对象句柄.
//Ano ano = new Ano(){int i = 51;public void prt(){System.out.println(i);}}; //4:覆盖了接口中的字段,实现了接口中的方法.
ano.prt(); } } interface Ano { int i = 50; public void prt(); }//总结:1.语句以分号结束,所以最后会有个分号. ///////2.匿名类不是真正的"匿名",只是用大括号中的代码来覆盖"原"类中的代码,来临时覆盖(实现)方法或者其他的功能. ///////3.Thread类要求覆盖run()方法.所以这里就临时覆盖一下. ///////4.不覆盖也没有问题,只不过什么也不做.
也就是说你可以在大括号里面写run方法使thread成为一个可执行线程比如Thread thread = new Thread () //注意这里没有分号
{
public void run()
{
System.out.println("the thread is running");
//在这里写你想处理的内容
}}; ////注意这里的分号 至于为什么要这样做以及匿名内部类的好处(比如方便访问成员变量等)这些就多看看书吧,现在java基础类的书好多啊!~!
public class Test{
class MyThread extends Thread{
public void run(){
//some code here
}
}
public void test(){
Thread thread = new MyThread();
//some other code
}
}上面这个容易理解些,把匿名类变成了内部类。
class TestAnonymityClass
{
public static void main(String [] args)
{
//Ano ano = new Ano();
//1:没有大括号,就是用接口本身,接口是没有构造方法的,所以不能new.
Ano ano = new Ano(){};
//2:有大括号,就是给出了方法体,编译器会自动添加默认的构造方法.
////构造时,因为prt()方法没有方法体,所以也不能构造.编译时报错:要求覆盖方法prt()
////更准确点说应该是:实现方法prt()
//Ano ano = new Ano(){public void prt(){System.out.println(i);}};
//3:实现了接口中的方法.所以构造成功.new成功了.返回一个对象句柄.
//Ano ano = new Ano(){int i = 51;public void prt(){System.out.println(i);}};
//4:覆盖了接口中的字段,实现了接口中的方法.
ano.prt();
}
}
interface Ano
{
int i = 50;
public void prt();
}//总结:1.语句以分号结束,所以最后会有个分号.
///////2.匿名类不是真正的"匿名",只是用大括号中的代码来覆盖"原"类中的代码,来临时覆盖(实现)方法或者其他的功能.
///////3.Thread类要求覆盖run()方法.所以这里就临时覆盖一下.
///////4.不覆盖也没有问题,只不过什么也不做.