机器是日文的,看不懂 ,麻烦安装中文系统的朋友 把这段代码报的错误信息贴一下(java)

wentihejie001 2008-01-25 01:11:37

class Person
{
String name = "no name";
public Person(String nm){name = nm;}
}

class Employee extends Person
{
String empID = "0000";
public Employee(String id) { empID=id; }
}

class EmployeeTEST
{
public static void main(String [] args)
{
Employee e = new Employee("4321");
System.out.println(e.empID);
}
}


...全文
189 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wentihejie001 2008-01-25
  • 打赏
  • 举报
回复
额 ,还是有点迷糊,构造器属于JAVA哪方面的内容? 我去找本书看看
yami251139 2008-01-25
  • 打赏
  • 举报
回复
你可以這樣理解。。 怎么方便怎么記好了
你new的時候 他調用了父類的構造器 但子類的構造器里一定要有父類的構造器的參數,你可以再加,但父類的參數一定要有,因為集成- -|、
但是{}里面的方法可以不用,自己用自己的(覆蓋率父類構造器里的方法),不寫就用父類的
wentihejie001 2008-01-25
  • 打赏
  • 举报
回复
那这样的话 public Employee(String id) { super(id); }
算不算 是对 public Person(String id) { this.empID = id; } 的重写呢?

yami251139 2008-01-25
  • 打赏
  • 举报
回复
class Person {
String name = "no name";
String empID = "0000";
public Person(String id) {
this.empID = id;
}
}
class Employee extends Person {
public Employee(String id) {
super(id);
}
}
class EmployeeTEST {
public static void main(String[] args) {
Employee e = new Employee("1212");
System.out.println(e.empID);
}
}
這樣也行,直接在父類里面寫方法 子類調用就行了
子類繼承父類是不能有自己的構造方法的
像LS說的那樣 你 new employee的時候他不是用的employee而使用person的構造器
老紫竹 2008-01-25
  • 打赏
  • 举报
回复
一个类如果是继承的另外一个类,他就不能有自己的构造方法了,只能调用或者重写他的父类构造方法。

如果你写了自己的构造器,一定要注意是否也写一个没有参数的构造器,比如
class Person
{
String name = "no name";
public Person(String nm){name = nm;}
public Person(){} // 这样就可以了
}


至于那些名字,都是翻译的问题,叫构造器和构造方法的比较多

wentihejie001 2008-01-25
  • 打赏
  • 举报
回复
那为什么改成空就可以了呢?
yami251139 2008-01-25
  • 打赏
  • 举报
回复
class Person
{
String name = "no name";
public Person()----------- 父類構造器改為空
{}
}

class Employee extends Person
{
String empID = "0000";
public Employee(String id) { empID=id; }
}

class EmployeeTEST
{
public static void main(String [] args)
{
Employee e = new Employee("4321");
System.out.println(e.empID);
}
}


運行結果4321
wentihejie001 2008-01-25
  • 打赏
  • 举报
回复
那我是不是能这样理解 ,一个类如果是继承的另外一个类,他就不能有自己的构造方法了,只能调用或者重写他的父类构造方法。

另外,我刚才搜索了一下 java中,为什么有人说是构造函数 有人说是构造方法 有人说是构造器 ,还有人说java中没有构造函数,只有构造方法,我都搞晕了,请问这个3个名词 指的是一样的东西吗?
老紫竹 2008-01-25
  • 打赏
  • 举报
回复
1 任何类,在构造的时候,首先调用父类的构造器,如果不编码指定,比如super(id); 则默认调用 super(); 无参数的构造器
2 如果类没有任何构造器,则会有一个无参数的构造器编译时被自动生成,如果有了其他的构造器,则不会自动生成了。

所以你的
class Person
书写了一个String参数的构造器,就不能自动生成无参数的构造器了
子类如果不指定 super(String)的构造器,则会因为找不到父类的构造器而报错!
wentihejie001 2008-01-25
  • 打赏
  • 举报
回复
啊 谁跟我一点 java 构造函数方面的知识,不懂呀。
qybao 2008-01-25
  • 打赏
  • 举报
回复
还有补充一下,class EmployeeTEST加上public,如果你想测试的话
qybao 2008-01-25
  • 打赏
  • 举报
回复

class Person
{
String name = "no name";
public Person(String nm){name = nm;}
}

class Employee extends Person
{
String empID = "0000";
public Employee(String id) { super(id); empID=id; } //一看就看出问题了,要么Person有默认构造器,要么像这样自己到调用Person的构造函数,否则没法构造父类对象,又怎么能构造字类对象?
}

class EmployeeTEST
{
public static void main(String [] args)
{
Employee e = new Employee("4321");
System.out.println(e.empID);
}
}

leblang 2008-01-25
  • 打赏
  • 举报
回复
EmployeeTEST.java:10: Person(java.lang.String) in Person cannot be applied to ()

public Employee(String id) { empID=id; }
^
1 error
dracularking 2008-01-25
  • 打赏
  • 举报
回复
父类有重载构造函数且没有显式的默认构造函数
两种方法

1.显式添加父类默认构造函数
2.在子类构造函数中显式调用父类构造函数(重载版本)

62,623

社区成员

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

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