抽象类可以有构造函数吗?
如果是这样,它如何使用以及用于什么目的?
是的,抽象类可以有一个构造函数。考虑一下:
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); } }
超类Product是抽象的并且有一个构造函数。具体类TimesTwo有一个只硬编码值 2 的TimesWhat构造函数。具体类有一个允许调用者指定值的构造函数。
Product
TimesTwo
TimesWhat
抽象构造函数将经常用于强制类约束或不变量,例如设置类所需的最小字段。
注意:由于父抽象类中没有默认(或无参数)构造函数,子类中使用的构造函数必须显式调用父构造函数。