有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该定义构造函数是扩展抽象类的类吗?

如果我有这个抽象类:

package com.abc;

public abstract class Player {
    private String name;

    public Player(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

当我从抽象类扩展一个新类时,这个新类默认使用继承的构造函数,还是我必须创建一个调用“super”的构造函数


共 (2) 个答案

  1. # 1 楼答案

    由于基类Player缺少一个默认构造函数(如果提供任何其他构造函数,则自动生成的构造函数将被有效删除),因此派生类中的所有构造函数都需要显式地从String调用构造函数

    通过使用supername的适当值来实现。这必须是任何子类构造函数中的第一条语句

  2. # 2 楼答案

    默认情况下,它将使用默认的空构造函数;由于显式提供了构造函数,因此无法获得默认构造函数。因此,yes您必须显式地调用^{。如果你不想要这个限制,那么你应该在Player中添加一个空构造函数

    protected Player() { // <  only visible to sub-classes.
        // ... implicit super();
    }