本帖最后由 创造命运 于 2014-4-17 12:57 编辑
下午在回顾多线程时,碰到了麻烦。 以下是毕老师的源代码: public class ThreadTest03 { public static voidmain(String[] args) { Test t1 = new Test("One---"); Test t2 = new Test("Two+++"); t1.start(); t2.start(); } } class Test extends Thread { //privateString name; Test(String name) { //this.name = name; super(name); } public void run() { for (int i = 0; i< 10; i++) { System.out.println(Thread.currentThread().getName()+"::"+i); } } } 问题1:我将Test t1 =new Test("One---");和Test t2 = newTest("Two+++");改成了Test t1 = new Test(); Test t2 = new Test();后编译出问题。 为什么会报:构造函数找不到符号呢?这里调用的是无参数的构造函数,但是每个类里面不是缺省了又一个无参数的构造函数吗? 然后我在Test类里加入代码:Test(){}。再编译,没错,正常运行。 是不是一个类在定义了带参数的构造方法后,如果不显示的再定义无参数的构造方法,那么该类中就不会再有无参数的构造方法呢?
问题2:我将Test类的构造方法Test(String name){super(name);}删掉后,编译出错。 还是报构造函数找不到符号,为什么?我们看到此时Test类里已经没有了带参数的构造方法,但是它不是继承了Thread类吗?Thread类里有带参数的构造方法啊!
|