可以有,抽象类可以声明并定义构造函数。
因为抽象类不可以创建实例,所以抽象类的构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数)。
既然不能对抽象类实例化,那么抽象类构造函数的作用是什么?
可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super (),Java中默认超类的构造函数。子类对象实例化的时候,满足先执行父类构造,再执行子类构造的顺序。
文章参考内容来自 万河归海