Попытка создания экземпляра объекта абстрактного класса, это ошибка компиляции или синтаксическая ошибка? - PullRequest
0 голосов
/ 18 апреля 2020

При попытке создать экземпляр абстрактного класса, что это за ошибка? Ошибка компиляции или синтаксиса?

1 Ответ

0 голосов
/ 18 апреля 2020

Это ошибка компиляции. Это потому, что вы пытаетесь создать экземпляр абстрактного класса в любой точке.

Причина, по которой это невозможно, очень проста. Смысл абстрактного класса в том, что он содержит объявления методов, которые еще не реализованы. Реализация затем выполняется в дочерних классах, которые наследуются от этого абстрактного класса. Итак, предположим, что у вас есть абстрактный класс, такой как:

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....");
     }
}
...