public class game extends Thread{
public void run() {
System.out.println("Sub-class must override the void run() method of Thread class!");
}
public static void main(String args[]) {
Thread t = new Thread();
t.start();
}
}
对于上面这些代码行,我在控制台中什么都没有。但对于以下代码:
public class game extends Thread{
public void run() {
System.out.println("Sub-class must override the void run() method of Thread class!");
}
public static void main(String args[]) {
game g = new game();
g.start();
}
}
我得到了“Sub-class必须覆盖Thread类的void run()方法!”显示在控制台中。
你能帮助我,为什么我需要创建子类的对象而不是Thread类的对象?有什么不同?对不起,我是新手。
答案 0 :(得分:2)
那是因为在第一个代码中,对象是一个没有任务要运行的默认线程。你可以给线程对象一个像这样的任务,
public class game implements Runnable{
public void run() {
System.out.println("Sub-class must override the void run() method of Thread class!");
}
public static void main(String args[]) {
Thread t = new Thread(new game());
t.start();
}
}
然而在第二种情况下,你给Thread(它的Sub-class Game)一个默认任务,用它的run
方法打印。查看有关线程here
答案 1 :(得分:2)
如果创建父类的实例,编译器将不知道其子类。这就是为什么你需要实例化oppesed到父类的子类。