抽象类中的构造函数

时间:2013-12-12 07:05:30

标签: java

我们不能实例化抽象类,但抽象类可以包含构造函数。

那么抽象类中构造函数的目的是什么?

5 个答案:

答案 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首先实例化为超类。 因此,对于实例化,类构造函数很有用。