Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这段代码中的错误是什么?为什么?_Java - Fatal编程技术网

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

Java 这段代码中的错误是什么?为什么?,java,Java,将“没有名字”更改为“没有名字”(结束语)可能在这里: String name=“No name”; 如果是: String name=“无名称” 此外,我不确定这是否是您粘贴的编辑器,但这也是错误的: Employee e=新员工(“4321”); 应该是: Employee e=new Employee(“4321”);您的empID字段不是公共字段/没有访问器方法/未将其定义为属性。如果您除了源代码和模糊的帖子标题外,绝对没有提供任何错误信息,也不要指望人们提供帮助。更改此行 String

“没有名字”
更改为
“没有名字”
(结束语)

可能在这里:

String name=“No name”;

如果是:

String name=“无名称”

此外,我不确定这是否是您粘贴的编辑器,但这也是错误的:

Employee e=新员工(“4321”);

应该是:


Employee e=new Employee(“4321”);

您的empID字段不是公共字段/没有访问器方法/未将其定义为属性。如果您除了源代码和模糊的帖子标题外,绝对没有提供任何错误信息,也不要指望人们提供帮助。

更改此行

String name=“No name”;

致:

String name=“无名称”


检查您的结账质量。

员工的构造函数必须调用其超级构造函数Person的构造函数

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);
   }
} 
许多事情:

  • 您在字符串周围使用了错误类型的引号字符。您需要使用
    。而不是

  • 您的
    Person
    类没有默认构造函数。因此,您必须显式调用
    super(“some name”);
    作为
    Employee
    构造函数的第一行(我建议添加一个以
    name
    employeeId
    作为参数的构造函数)

  • 您将属性声明为
    emplD
    (小写
    L
    字符),但尝试将其指定为
    empID
    (大写
    I
    字符)。您可以随意调用它,但名称需要在两个位置匹配

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

  • 在一个文件中定义多个类通常不是一种好的编码方式,尤其是当所有类都是可以公开访问的时候


  • 您必须在“Employeesuper(id)”类的构造函数中调用超类(
    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());
      }
    } 
    

    调用超级类构造函数可以解决这个问题

    public Employee(String id) {super(id);empID =id; 
    

    为什么您认为有错误?请问一个适当的问题。我看到的一个问题是可怕的缩进。您是在文字处理器中编辑的吗?您的引号必须是正常的ascii引号,
    表示字符串,
    表示字符。开始引号和结束引号不正确。
        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);
        }
       }