这段代码中的错误是什么?为什么?

时间:2011-05-06 09:30:41

标签: java

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);
   }
} 

8 个答案:

答案 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)

许多事情:

  1. 你在字符串周围使用了错误的引号字符。您需要使用"。不是'

  2. 您的Person类没有默认构造函数。因此,您必须明确调用super("some name");作为Employee构造函数的第一行(我建议添加一个将nameemployeeId作为参数的构造函数。)< / p>

  3. 您将该属性声明为emplD(带有小写L字符),但您尝试将其指定为empID(带有大写{{1}字符)。您可以随意调用它,但名称需要在两个地方匹配。

  4. 您的对象设计违反了封装的基本原则。 Iname属性应该是私有字段,如果外部类需要访问这些值,那么您应该提供适当的公共getter方法。换句话说,您应该能够empID代替e.empID

  5. 在单个文件中定义多个类通常不是很好的编码风格,特别是当所有类都可以公开访问时。

答案 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);
    }
   }