Философия Java

         

Конструктор по умолчанию


Как упоминалось ранее, конструктор по умолчанию является единственным конструктором без аргументов, который используется для создания объекта”. Если вы создаете класс, который не имеет конструкторов, компилятор автоматически создаст конструктор по умолчанию вместо вас. Например:

//: c04:DefaultConstructor.java

class Bird { int i; }

public class DefaultConstructor { public static void main(String[] args) { Bird nc = new Bird(); // по умолчанию!

} } ///:~

Строка

new Bird();

создает новый объект и вызывает конструктор по умолчанию, даже не смотря на то, что он не был явно определен. Без этого мы не имели бы метода построения нашего объекта. Однако если вы определили любой конструктор (с аргументами или без них) компилятор не будет синтезировать его за вас:

class Bush { Bush(int i) {} Bush(double d) {} }

Теперь, если вы скажете:

new Bush();

компилятор заявит, что он не может найти соответствующий конструктор. Это похоже на то, что когда вы не определяете ни одного конструктора, компилятор говорит: “Вы обязаны иметь какой-то конструктор, так что позвольте мне создать его за вас”. Но если вы написали конструктор, компилятор говорит: “Вы написали конструктор, так что вы знаете, что вы делаете; если вы не создали конструктор по умолчанию, это значит, что он вам не нужен”.



Содержание раздела