抽象类可以有构造函数吗?
2022-08-31 04:09:00
抽象类可以有构造函数吗?
如果是,如何利用它,用于什么目的?
是的,抽象类可以具有构造函数。请考虑以下情况:
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);
}
}
超类是抽象的,并且具有构造函数。具体类有一个构造函数,该构造函数仅对值 2 进行硬编码。具体类具有一个构造函数,该构造函数允许调用方指定值。Product
TimesTwo
TimesWhat
抽象构造函数将经常用于强制实施类约束或不变量,例如设置类所需的最小字段。
注意:由于父抽象类中没有默认(或无参数)构造函数,因此子类中使用的构造函数必须显式调用父构造函数。
如果您处于以下情况之一,则可以在抽象类中定义构造函数:
请注意:
无论如何,不要忘记,如果你没有定义一个构造函数,那么编译器将自动为你生成一个(这个是公共的,没有参数,也不做任何事情)。