3 回答
TA贡献1856条经验 获得超5个赞
您希望在子类实例化之前执行一些初始化(对抽象类的字段)。 您已经在抽象类中定义了最终字段,但是没有在声明本身中初始化它们;在本例中,您必须有一个构造函数来初始化这些字段。
您可以定义多个构造函数(具有不同的参数)。 你可以(应该吗?)定义所有受保护的构造函数(让它们公开是没有意义的) 您的子类构造函数可以调用抽象类的一个构造函数;它甚至可以调用一个构造函数。 不得不
调用它(如果抽象类中没有no-arg构造函数)
TA贡献1847条经验 获得超11个赞
是! 抽象类可以有构造函数。!
TA贡献1796条经验 获得超4个赞
abstract class Product {
int multiplyBy;
public Product( int multiplyBy ) {
this.multiplyBy = multiplyBy;
}
public int mutiply(int val) {
return multiplyBy * val;
}}class TimesTwo extends Product {
public TimesTwo() {
super(2);
}}class TimesWhat extends Product {
public TimesWhat(int what) {
super(what);
}}ProductTimesTwoTimesWhat
注意:由于父抽象类中没有默认(或非Arg)构造函数,子类中使用的构造函数必须显式调用父构造函数。
添加回答
举报
