Конструктор в Java на самом деле не «строит» объект, он используется для инициализации полей.
Представьте, что ваш абстрактный класс имеет поля X и Y, и что вы всегда хотите, чтобы они были инициализированы определенным образом, независимо от того, какой фактический бетонный подкласс в конечном итоге создан. Таким образом, вы создаете конструктор и инициализируете эти поля.
Теперь, если у вас есть два разных подкласса вашего абстрактного класса, когда вы создали их конструкторы, а затем будет вызываться родительский конструктор, и поля будут инициализированы.
Если вы ничего не делаете, будет вызываться конструктор по умолчанию родителя. Однако вы можете использовать Super ключевое слово, чтобы вызвать конкретный конструктор на родительском классе.
Поскольку другой класс может продлить его, и ребенок должен вызывать конструктор SuperClass.
Все классы, включая абстрактные, могут иметь конструкторы. Конструкторы абстрактных классов будут вызваны при инстанциировании его конкретного подкласса
.Реализация Мудрый вы часто видите внутри супер () утверждения в подклассах конструкторов, что-то вроде:
public class A extends AbstractB{
public A(...){
super(String constructorArgForB, ...);
...
}
}
Поскольку абстрактные классы имеют состояние (поля) и иногда их нужно как-то инициализировать.