子类构造函数是否需要超类构造函数的所有参数?
我有两个类,Staff
和AdvancedStaff
,扩展了前一个类。
Staff
具有以下构造函数:
public Staff (String number, String title, String name, String role, char level) { staffNumber = number;
staffTitle = title;
staffName = name;
staffRole = role;
payScaleLevel = level;
}
我将注意到所有实例变量都已设置为private。
同时,Advanced Staff
具有以下构造函数:
public AdvancedStaff (String number, String title, String name) { super(number, title, name);
role = "Entry level Advanced Staff";
level = 'A';
}
但是,这为我的Staff
构造函数引发了“找不到符号”错误。
我尝试使用,super.staffRole = "Entry level Advanced Staff";
但是我的超类的私有范围阻止了这种情况。
我发现向我的构造函数中添加字段String
role并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法?char
level``AdvancedStaff
回答:
您必须向构造函数提供所有参数。
在您的情况下,您仍然可以调用的构造函数Staff
,但 提供一些默认值,例如:
super(number, title, name, "Entry level Advanced Staff", 'A');
这项工作与您在构造函数中已经做过的工作相同AdvancedStaff
,只是现在是Staff
设置私有变量值的类,因为您是通过构造函数传递它的。
附带说明一下,如果您打算从子类访问这些私有变量,则应protected
改为使用它们。
以上是 子类构造函数是否需要超类构造函数的所有参数? 的全部内容, 来源链接: utcz.com/qa/410572.html