Java:继承类构造函数正在调用父类(super class)

标签 java inheritance constructor subclass superclass

在创建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);

(将其作为 ManagerEngineer 构造函数中的顶行。)您还应该删除 this.emp_id = id线,在这两种情况下。

一般来说,如果您的构造函数不以 super(...)this(...) 语句开头(并且您只能有一个其中,而不是两者),那么它默认使用 super() (不带参数)。

关于Java:继承类构造函数正在调用父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299368/

相关文章:

java - java 反射的调用方法在该方法发生更改时不会在运行时更新该方法

c++ - Qt QLine类扩展

c++ - protected 构造函数使基类不可实例化

c++ - 在条件 C++ 语句中创建对象

java - 如何在我的 JavaFX 应用程序中的任何位置检测 SPACE KeyEvent?

java - Spring Boot 和 PostgreSQL- HikariCP 总是返回 null

java - 如何将用户输入的整数发送到 Java 中的链表?

python - 在 Python 中调用当前类的方法版本

c# - 装饰者模式浪费内存

python - 给定一个已经创建的python对象,有没有办法通过检查找出构造的实际参数?