这个问题确实非常蛋疼,在第九天讲自定义异常类的时候就会讲到,结果昨天想了半天还是没搞懂,我觉得我可
能到现在还没完全弄懂,先说下我的理解,错误的地方,烦请纠正.
Test(String name)这个是构造方法,Test是Thread子类,好吧:
1.super语句一定要定义在子类构造方法的第一行.因为子类会具备父类中的数据,所以要先明确父类是如何对
这些数据初始化的,所以要先初始化父类,所以第一行应该是super语句.当然了,也可以用this()访问本类的构
造方法.
2.当父类中没有空参数的构造函方法时,子类必须手动通过super()语句指定要访问父类中的构造方法.所以可
能是因为Thread里面没有定义空参数的构造方法,而是只定义了带参数的构造方法,就是
Thread(String name)
{
this.name = name;
}
所以Test(String name)
{
}
第一行要写super(name);写了之后就能实例化Test对象往name赋值了.
3..this.用于在成员变量和局部变量同名时区分,表示所在类成员变量.也就是说你Thread里面的那个
this.name是指Thread的成员变量name,this指Thread.
4.所以lz的完整代码应该是这样吧:
class Thread
{
String name;
Thread(String name)
{
this.name=name;
}
}
class Test extends Thread
{
Test(String name)
{
super(name);
}
}
class ThreadTest
{
public static void main(String[] args)
{
Test t1 = new Test("one---");
Test t2 = new Test("two+++");
}
} |