java我应该定义构造函数是扩展抽象类的类吗?
如果我有这个抽象类:
package com.abc;
public abstract class Player {
private String name;
public Player(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
当我从抽象类扩展一个新类时,这个新类默认使用继承的构造函数,还是我必须创建一个调用“super”的构造函数
# 1 楼答案
由于基类
Player
缺少一个默认构造函数(如果提供任何其他构造函数,则自动生成的构造函数将被有效删除),因此派生类中的所有构造函数都需要显式地从String
调用构造函数通过使用
super
和name
的适当值来实现。这必须是任何子类构造函数中的第一条语句# 2 楼答案
默认情况下,它将使用默认的空构造函数;由于显式提供了构造函数,因此无法获得默认构造函数。因此,yes您必须显式地调用^{。如果你不想要这个限制,那么你应该在
Player
中添加一个空构造函数