一尘不染

Java抽象类可以有构造函数吗?

java

抽象类可以有构造函数吗?

如果是这样,它将如何使用以及用于什么目的?


阅读 755

收藏
2020-02-29

共1个答案

一尘不染

是的,抽象类可以具有构造函数。考虑一下:

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具有允许调用者指定值的构造函数。

抽象构造函数将经常用于强制类约束或不变量,例如设置类所需的最小字段。

2020-02-29