新手学java,问一个关于子类的构造函数的问题!谢谢!!
想问一个问题,子类既然是继承了超类,也就继承了超类中的构造函数,那为什么不能直接调用子类中已经继承下来的构造函数呢?比如:
class SuperClass{
private String myName;
private int myAge;
SuperClass(String name, int age)
{
myName=name;
myAge=age;
}
SetPerson(String name, int age)
{
myName=name;
myAge=age;
}
}
class SubClass extends SuperClass{
public static void main(String args[])
{
SubClass oa=newSubClass("AA",22);
}
}
改为:
class SubClass extends SuperClass{
SubClass(String name, int age)
{
super(name,age);
}
public static void main(String args[])
{
SubClass oa=newSubClass("AA",22);
}
}
后可以通过。
问题点数:5、回复次数:4Top
1 楼believefym(feng)回复于 2005-08-01 22:10:20 得分 0
因为子类调用构造函数必然调用父类的构造函数,一般无参的就默认了,有参数就要显式调用,比如super(name,age);
你的父类只有带参的构造函数,子类调用构造的函数找不到可以调用的父类构造函数,自然出错了Top
2 楼bryantd(Delphi菜鸟)回复于 2005-08-01 22:24:30 得分 0
如果按照楼上的说法,是不是程序改成这样就可以了呢?(我没测试呢)
class SuperClass{
private String myName;
private int myAge;
SuperClass()
{
myName="AA";
myAge=22;
}
SetPerson(String name, int age)
{
myName=name;
myAge=age;
}
public void Prt()
{
System.out.println("Name="+name+" Age="+age);
}
}
class SubClass extends SuperClass{
public static void main(String args[])
{
SubClass oa=newSubClass();
oa.prt();
}
}Top
3 楼chris_tina_zhang(Java初学,请大家帮忙,谢谢!)回复于 2005-08-02 07:10:00 得分 0
兄弟你的方法名的命名规则没有掌握啊
改了一下可以通过
class SuperClass{
private String myName;
private int myAge;
SuperClass()
{
myName="AA";
myAge=22;
}
void setPerson(String name, int age)
{
myName=name;
myAge=age;
}
public void prt()
{
System.out.println("Name="+myName+" Age="+myAge);
}
}
class SubClass extends SuperClass{
public static void main(String args[])
{
SubClass oa=new SubClass();
oa.prt();
}
}
Top
4 楼bryantd(Delphi菜鸟)回复于 2005-08-02 10:48:57 得分 0
一着急写错了!哈哈。见笑见笑。
以前是写pascal的,老觉得procedure不用返回值类型……Top




