在创建java程序时遇到问题,
子类构造函数通过调用父类(super class)的方法抛出错误
代码与此类似:
class Manage
{
public static void main(String[] args)
{
Manager m1 = new Manager ( 35 );
}
}
class Employee
{
int emp_id;
public Employee(int id)
{
this.emp_id = id;
}
public int get_id()
{
return emp_id;
}
}
class Manager extends Employee
{
public Manager(int id )
{
this.emp_id = id ;
}
}
class Engineer extends Employee
{
public Engineer(int id)
{
this.emp_id = id ;
}
}
错误是这样的:
$ javac app.java
app.java:25: cannot find symbol
symbol : constructor Employee()
location: class Employee
{
^
app.java:33: cannot find symbol
symbol : constructor Employee()
location: class Employee
{
^
2 errors
为什么会发生这种情况?
最佳答案
父类(super class)没有默认构造函数。因此,您需要将适当的构造函数参数传递给父类(super class):
super(id);
(将其作为 Manager
和 Engineer
构造函数中的顶行。)您还应该删除 this.emp_id = id
线,在这两种情况下。
一般来说,如果您的构造函数不以 super(...)
或 this(...)
语句开头(并且您只能有一个其中,而不是两者),那么它默认使用 super()
(不带参数)。
关于Java:继承类构造函数正在调用父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299368/