Это ошибка компиляции. Это потому, что вы пытаетесь создать экземпляр абстрактного класса в любой точке.
Причина, по которой это невозможно, очень проста. Смысл абстрактного класса в том, что он содержит объявления методов, которые еще не реализованы. Реализация затем выполняется в дочерних классах, которые наследуются от этого абстрактного класса. Итак, предположим, что у вас есть абстрактный класс, такой как:
abstract class Vehicle {
abstract void move();
}
, а также предположим, что можно было бы создать экземпляр класса Vehicle типа Vehicle vehicle = new Vehicle()
. Какой код должен выполняться при вызове vehicle.move()
?
Чтобы создать экземпляр Vehicle
, вам нужно создать конкретный класс, который наследует от Vehicle
, а затем переопределяет функцию move
. Нравится:
class Car extends Vehicle {
@Override
void move() {
System.out.println("brum brum....");
}
}