Мы говорили о конструкторах ранее. Вы, возможно, помните, что каждый объект вашего Java-кода автоматически получает конструктор по умолчанию, не принимающий аргументов. Вы не должны определять его и можете не увидеть его в коде. Фактически, мы воспользовались этим в нашем классе Adult . Здесь не видно конструктора.
Однако на практике желательно определять свои собственные конструкторы. Поступая таким образом, вы можете быть абсолютно уверенны в том, что кто-либо, исследующий ваш класс, будет знать, как его создавать именно тем способом, который вы для этого предусматривали. Потому давайте создадим наш собственный конструктор без аргументов. Вспомните общую структуру конструктора:
accessSpecifier ClassName( аргументы ) { выражения конструктора }
Определить конструктор без аргументов для Adult просто:
public Adult { }
Все. Наш конструктор без аргументов действительно не делает ничего, кроме создания Adult . Теперь при вызове new для создания Adult мы будем использовать наш конструктор без аргументов вместо конструктора по умолчанию. Но что если мы захотим, чтобы конструктор делал что-нибудь? В случае с Adult могло бы быть очень удобным уметь передавать фамилию и имя в виде объектов String и устанавливать в конструкторе наши переменные экземпляра в эти начальные значения. Это тоже сделать просто:
public Adult(String aFirstname, String aLastname) { firstname = aFirstname; lastname = aLastname; }
Этот конструктор принимает два аргумента и устанавливает в их значения две наши переменные экземпляра. Теперь у нас есть два конструктора. Нам, фактически, не нужен первый конструктор, но нет ничего страшного, если мы сохраним его. Он предоставляет пользователям данного класса варианты выбора. Они могут создавать Adult с именем по умолчанию, либо создавать его с конкретным именем.
То, что мы сейчас сделали, даже если вы, возможно, не знали этого, называется перегрузкой метода. Мы обсудим эту концепцию более подробно в следующем разделе.