在毕老师视频中,学到多线程时有这么一个问题,其实这个问题早在异常那会就有了,现在还是没有弄懂,问题如下:- class Test extends Thread
- {
- private String name;
- Test(String name)
- {
- super(name);
- //this.name=name; }
- public void run()
- {
- for(int x=0;x<60;x++)
- {
- System.out.println(this.getName()+" run..."+x);
- }
- }
- }
复制代码- class ThreadTest
- {
- public static void main(String[] args)
- {
- Test t1=new Test("one---");
- Test t2=new Test("two+++");
- t1.start();
- t2.start();
- for(int x=0;x<60;x++)
- {
- System.out.println("main......"+x);
- }
-
- }
- }
-
复制代码 一个是用子类构造函数赋值,一个是调用父类构造函数赋值,我认为应该效果一样的,可是后面调用getName()函数时,产生的结果就是不一样了。用super父类构造函数能调用getName,为什么用子类this.name=name就不能呢,不是子类也继承了这个方法吗?还有前面学习异常的时候有一个负数异常那会我就没有弄懂,super就会调用getMessage,而在子类构造函数里面直接赋值后,后期就不会调用getMessage,这是为啥呢?求解! |