Вы не создаете экземпляры абстрактных классов, но конструктор вызывается при создании экземпляра подкласса.
Можно использовать для инициализации общих атрибутов, т. Е.
import java.util.List;
import java.util.ArrayList;
abstract class BaseClass {
protected List list; // visible from subclasses
public BaseClass() {
System.out.println("to abstract...");
// common initialization to all subclasses
list = new ArrayList();
list.add("a");
list.add("a");
list.add("a");
}
}
class ConcreteClass extends BaseClass {
public ConcreteClass(){
// The list is initialized already
System.out.println("now it is concrete and the list is: = "+ this.list );
}
}
class TestAbstractClass {
public static void main( String [] args ) {
BaseClass instance = new ConcreteClass();
}
}
выход
$ java TestAbstractClass
to abstract...
now it is concrete and the list is: = [a, a, a]