java - 父类(super class) 子类 构造函数 java

标签 java constructor subclass superclass

我是 Java 新手。在下面的代码中,我很难理解这些概念。

class A {

    private Integer intr;

    public A(Integer intr) {
        this.inrt = intr;
    }

    public Integer getIntr() {
        return intr;
    }
}

class B extends A {

    public B(Integer intr) { //Eclipse asking me to create this constructor. 
        super(intr);
    }
}

我很困惑为什么我需要按照 eclipse 的建议创建这种构造函数。里面有什么?

最佳答案

子类的构造函数调用其父类(super class)的构造函数(在您的情况下是A)。如果您的子类 B 没有构造函数,编译器会自动创建一个不带任何参数的构造函数。该构造函数自动调用基类 A 的不带参数的构造函数。

由于您的基类 A 有一个带参数的构造函数,编译器不会为其生成不带参数的构造函数,因此您必须在子类中显式创建一个具有单个参数的匹配构造函数B 类。

还有在 B 中创建该构造函数的其他替代方法:

您可以在 A 中定义无参数构造函数:

public A()
{
   this.inrt = 0;
}

这将允许为 B 自动生成的无参数构造函数调用 A 中匹配的构造函数。

或者您可以在 B 中显式定义一个无参数构造函数,调用 A 的现有构造函数:

public B()
{
    super(0);
}

关于java - 父类(super class) 子类 构造函数 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688078/

相关文章:

java - 最小重量的背包

JavaFX 在另一个节点 (XML) 之后或之前添加节点(程序)

java - 为什么我的对象看到构造函数中没有给它的变量?

oop - Dlang : why are constructors not inherieted?

c++ - 将 smart_pointer 传递给构造函数与原始指针

Java——在子类中初始化父类(super class)变量?

c# - 带有子类的 Fluent NHibernate Repository

java - 如何使用 SimpleMessageListenerContainer 禁用 RabbitMQ 预取计数

java - 如何使用特定的键和值将流分组到 map ?

java - 如何声明抽象类的所有子类都将实现 main ?