JAVA 线程中 super()问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 00:57:34
public class TestJoin {
public static void main(String[] args) {
MyThread2 t1 = new MyThread2("abcde");
t1.start();
try {
t1.join();
} catch (InterruptedException e) {}

for(int i=1;i<=10;i++){
System.out.println("i am main thread");
}
}
}
class MyThread2 extends Thread {
MyThread2(String s){
super(s);
}

public void run(){
for(int i =1;i<=10;i++){
System.out.println("i am "+getName());
try {
sleep(1000);
} catch (InterruptedException e) {
return;
}
}
}
super(s);是调用父类的构造方法构造个父类出来,那应该是给父类起名吧,怎么弄成给 MyThread2对像起名了?
为了 这个问题 继承和重写 我都重新学了 但还是不懂。。。麻烦师傅们给我讲讲 自学遇到坎儿过不去很郁闷的。。

super(s)并不是构造父类出来!
MyThread2对象本身可以看做一个Thread,既它的父类对象
super(s)操作的其实还是你定义的对象t1!!!
并没有单独产生一个父类对象出来,
只是把他看做了一个父类,
并调用父类的方法来操作他!!!

你记住这句话

父类的引用,引用子类的实例!

反过来
不成立

不是给MyThread2起名,那是MyThread2的构造方法.是给线程起名的.