Возможно ли переопределение конструктора? - PullRequest
27 голосов
/ 24 февраля 2011

Что я знаю, так это то, что компилятор записывает конструктор по умолчанию без аргументов в байт-код. Но если мы напишем это сами, этот конструктор вызывается автоматически. Является ли этот феномен переопределением конструктора?

Ответы [ 13 ]

0 голосов
/ 07 сентября 2012

Конструктор выглядит как метод, но имя должно быть как имя класса, а не возвращаемое значение.

Переопределение означает то, что мы объявили в суперклассе, что именно мы должны объявить в подклассе, это называется переопределением. Имя суперкласса и имя подкласса различны.

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

0 голосов
/ 08 февраля 2012

Следует также отметить, что вы не можете переопределить конструктор в подклассе конструктором имени суперкласса. Правило OOPS говорит, что конструктор должен иметь имя в качестве имени класса. Если мы попытаемся переопределить конструктор суперкласса, он будет рассматриваться как неизвестный метод без возвращаемого типа.

0 голосов
/ 24 февраля 2011

Ваш пример не переопределен.Технически переопределения происходят в подклассе, но в этом примере метод contructor заменяется в исходном классе.

...