class Person {
String name = “No name";
public Person(String nm) { name = nm; }
}
class Employee extends Person {
String emplD = “0000”;
public Employee(String id) { empID = id; }
}
public class EmployeeTest {
public static void main(String[ ] args)
{
Employee e = new Employee(”4321”);
System.out.println(e.empID);
}
}
答案 0 :(得分:3)
Employee的构造函数必须调用其超级构造函数,即Person的构造函数。
public class Person
{
private String name;
public Person(String nm)
{
this.name = nm;
}
public String getName()
{
return this.name;
}
}
public class Employee extends Person
{
private String emplD;
public Employee(String nm, String id)
{
super(nm);
this.empID = id;
}
public String getId()
{
return this.empID;
}
}
public class EmployeeTest
{
public static void main(String[] args)
{
Employee e = new Employee("Some Name", "4321");
System.out.println(e.getID());
}
}
答案 1 :(得分:1)
将“No name’
更改为“No name"
(收尾报价)
答案 2 :(得分:1)
也许就在这里:
String name = “No name’;
应该是:
String name = "No name";
另外,我不确定这是否是您在此过程中粘贴的编辑器,但这也是错误的:
Employee e = new Employee(”4321”);
应该是:
Employee e = new Employee("4321");
答案 3 :(得分:1)
更改此行
String name = “No name’;
为:
String name = “No name";
检查你的结束时间。
答案 4 :(得分:1)
许多事情:
你在字符串周围使用了错误的引号字符。您需要使用"
。不是“
,'
或”
。
您的Person
类没有默认构造函数。因此,您必须明确调用super("some name");
作为Employee
构造函数的第一行(我建议添加一个将name
和employeeId
作为参数的构造函数。)< / p>
您将该属性声明为emplD
(带有小写L
字符),但您尝试将其指定为empID
(带有大写{{1}字符)。您可以随意调用它,但名称需要在两个地方匹配。
您的对象设计违反了封装的基本原则。 I
和name
属性应该是私有字段,如果外部类需要访问这些值,那么您应该提供适当的公共getter方法。换句话说,您应该能够empID
代替e.empID
。
在单个文件中定义多个类通常不是很好的编码风格,特别是当所有类都可以公开访问时。
答案 5 :(得分:0)
您的empID字段不公开/没有访问器方法/它未定义为属性。如果您完全没有提供除源代码和模糊帖子标题之外的错误信息,也不要指望别人提供帮助。
答案 6 :(得分:0)
你必须在类Employeesuper(id)的构造函数中调用超类(Person
)的构造函数;请在下面找到正确的代码。
public Employee(String id) {super(id);empID =id;
答案 7 :(得分:0)
调用超类构造函数可以解决问题!
public class Person {
String name = "No name";
public Person(String nm) { name = nm; }
}
public class Employee extends Person {
String empID = "0000";
public Employee(String id) {
super("Some Name");
empID = id; }
}
public class EmployeeTest {
public static void main(String[] args){
Employee e = new Employee("4321");
System.out.println(e.empID);
}
}