我们不能实例化抽象类,但抽象类可以包含构造函数。
那么抽象类中构造函数的目的是什么?
答案 0 :(得分:1)
我们可以在具体子类可实例化的范围内实例化抽象类的实例。当它们被实例化时,JVM将调用super()
构造函数。例如,如果你试试这个
public abstract class Base {
protected Base() {
System.out.println("Base");
}
}
public class Concrete extends Base {
public Concrete() {
System.out.println("Concrete");
}
public static void main(String[] args) {
new Concrete();
}
}
你会看到
Base
Concrete
答案 1 :(得分:1)
Constrcutors主要用于初始化数据成员。抽象类中也是如此,特别是如果您不想为继承类提供访问权限。 E.g:
public abstract class AbstractClass {
private int value;
public AbstractClass (int value) {
this.value = value;
}
}
public class ConcreteClass extends AbstractClass {
public ConcreteClass (int value) {
super(value);
}
}
答案 2 :(得分:1)
是的,您无法直接初始化abstract
类的对象,但此类可以是超类,其中扩展了其他类,并在创建子对象时调用Parent类构造函数。 / p>
你的问题,
那么抽象类中构造函数的目的是什么?
当创建一个对象时,使用某个默认值初始化参数非常有用,该类扩展了abstract
类,这通常称为初始化部分,如果没有在{{1}中放置构造函数然后编译器本身创建一个默认构造函数。
答案 3 :(得分:0)
抽象类可以是某个类的父类
即使在子对象创建时也会调用父类构造函数。
休息头脑风暴我留给你
答案 4 :(得分:0)
继承的基本概念首先是实例化超类然后是子类。 所以当我们继承一个抽象类时,JVM首先实例化为超类。 因此,对于实例化,类构造函数很有用。