新手上路问一简单问题

我需要更加努力 2011-03-17 04:49:04
class PersonInf {
String userName;
int userNumber;

public PersonInf(String name,int number){
userName=name;
userNumber=number;
}

public void show(){
System.out.println("userName:"+userName);
System.out.println("userNumber:"+userNumber);
}
}

class PersonInformation extends PersonInf{
String userNationality;
int userAge;

public PersonInformation(String userNationality,int userAge){//此处有错
super.show();
this.userNationality=userNationality;
this.userAge=userAge;
}

public void show(){
super.show();
System.out.println("userNationality:"+userNationality);
System.out.println("userAge:"+userAge);
}
}

public class Superuser{
public static void main(String[] args){
PersonInformation personInformation=new PersonInformation("Chinese",20);
personInformation.show();
}
}
错误说是未定义隐式超构造函数 PersonInf()。必须显式调用另一个构造函数。什么是隐式和显式啊?不懂,请求帮助!!!
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JamesLiu 2011-03-17
  • 打赏
  • 举报
回复
public PersonInformation(String userNationality,int userAge){
这里面隐含了super(),但是你没定义所以报错

------------------------
编程菜鸟学堂QQ群144648357
lanjingling539 2011-03-17
  • 打赏
  • 举报
回复
上面的代码应该为:
public PersonInformation(String userNationality,int userAge){
super(userNationality,userAge);
super.show();
this.userNationality=userNationality;
this.userAge=userAge;
}
lanjingling539 2011-03-17
  • 打赏
  • 举报
回复
当一个类写自己的构造函数时首先在自己的构造函数的第一行用关键字super来调用父类的构造函数,这样 就不会有那样的错误;
Ganymede 2011-03-17
  • 打赏
  • 举报
回复
public PersonInformation(String userNationality,int userAge)
{
super.show(); 这个不对,你要用super显示的调用父类的有参数 的构造方法,应该super("你要传入的字符串", "你要传入的int类型的数"),加入你不希望调用父类有参数的构造方法,那么就在父类里面写一个不带参数的构造方法,哪怕是空实现,这样子类的构造方法就不用显示的调用父类的构造方法了,你就可以调用你想调用的父类其他的方法了
}
lijian8552 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keeya0416 的回复:]
当你写一个类没写构造函数的时候
会给你默认一个无参的构造(隐式)
当你写了自己的带参数的构造函数就不会给你默认一个无参的构造
那么当别的类继承这个类时候就提示需要你(显式)写一个无参的构造
[/Quote]


+++
keeya0416 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keeya0416 的回复:]
当你写一个类没写构造函数的时候
会给你默认一个无参的构造(隐式)
当你写了自己的带参数的构造函数就不会给你默认一个无参的构造
那么当别的类继承这个类时候就提示需要你(显式)写一个无参的构造
[/Quote]
当然你在子类中写的构造函数内部指定调用父类的那个函数就没问题
当你不指定调用哪个的时候是默认调用无参的那个
keeya0416 2011-03-17
  • 打赏
  • 举报
回复
当你写一个类没写构造函数的时候
会给你默认一个无参的构造(隐式)
当你写了自己的带参数的构造函数就不会给你默认一个无参的构造
那么当别的类继承这个类时候就提示需要你(显式)写一个无参的构造

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧