Почему делают абстрактные классы в Java имеют конструкторов? [дубликат]

56
задан N J 11 July 2015 в 09:15
поделиться

5 ответов

Конструктор в Java на самом деле не «строит» объект, он используется для инициализации полей.

Представьте, что ваш абстрактный класс имеет поля X и Y, и что вы всегда хотите, чтобы они были инициализированы определенным образом, независимо от того, какой фактический бетонный подкласс в конечном итоге создан. Таким образом, вы создаете конструктор и инициализируете эти поля.

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

Если вы ничего не делаете, будет вызываться конструктор по умолчанию родителя. Однако вы можете использовать Super ключевое слово, чтобы вызвать конкретный конструктор на родительском классе.

80
ответ дан 26 November 2019 в 17:17
поделиться

Поскольку другой класс может продлить его, и ребенок должен вызывать конструктор SuperClass.

7
ответ дан 26 November 2019 в 17:17
поделиться

Все классы, включая абстрактные, могут иметь конструкторы. Конструкторы абстрактных классов будут вызваны при инстанциировании его конкретного подкласса

.
10
ответ дан 26 November 2019 в 17:17
поделиться

Реализация Мудрый вы часто видите внутри супер () утверждения в подклассах конструкторов, что-то вроде:


public class A extends AbstractB{

  public A(...){
     super(String constructorArgForB, ...);
     ...
  }
}


1
ответ дан 26 November 2019 в 17:17
поделиться

Поскольку абстрактные классы имеют состояние (поля) и иногда их нужно как-то инициализировать.

4
ответ дан 26 November 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: