Книга: Основы программирования с Java
Назад: Пример
Дальше: Методы

Конструктор

Теперь, когда вы увидели пример по определению класса для автомобилей, давайте вернемся и посмотрим на общую структуру объявления класса.

При попытке создать новый класс в IntelliJ IDEA, вы увидите всплывающее окно, которое запрашивает имя класса.

Скажем, мы хотим назвать класс, который будет создан как NewClass.

После того как вы обеспечили имя класса, вы увидите шаблон для создания нового класса.





Давайте рассмотрим каждый компонент объявления класса более тщательно.

Программа начинается с некоторых комментариев, которые начинаются с косой черты, а затем двумя звездочками и заканчиваются звездочкой и косой чертой.

Все между этими разделителями будет рассматриваться как комментарии и будет игнорироваться компилятором.







Это специальный формат размещения комментария для создания особого рода документа под названием JavaDoc.

Вы также можете использовать еще один вид комментариев, который начинается с двойных косых черт.

Это еще один способ размещения комментария.

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

После комментариев, следующая строка начинается с ключевого слова public, а затем после ключевого слова class следует имя класса, который вы создаете.

В качестве именования классов используется верхний CamelCase.

Ключевое слово public является идентификатором доступа.

В примере Car, у нас был public class Car, чтобы начать определение класса.

И Java определяет четыре уровня идентификаторов доступа.

Их также называют модификаторы доступа.







Это public и private, а также protected и package private.

Для классов, методов, данных или полей, объявленных как public, они могут быть видны для любого класса в любом пакете.

Пакеты представляют собой группы связанных классов.

Мы вернемся к этому позже.

Идентификатор private указывает, что методы и данные или поля, объявленные в классе, могут быть доступны только в пределах одного класса.

Классы не могут быть объявлены как private, за исключением случая вложенных классов.

Основная часть определения класса заключена в фигурные скобки.







В основной части первый блок предназначен для определения переменных экземпляра, то есть, эти переменные будут связаны с конкретным экземпляром объекта в NewClass.

В этом примере, переменная х с типом int будет создана при создании нового объекта в NewClass и переменная будет доступна только в NewClass, потому она объявлена как private.

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

Далее блок программы предназначен для определения конструкторов.

Конструкторы обеспечивают экземпляры объекта, которые будет созданы из шаблона класса.

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

Конструкторы используются для инициализации свойства или поля объекта.

Конструктор вызывается один раз и только один раз во время создания объекта с помощью оператора new и не имеет возвращаемого типа.

Я буду говорить больше о возвращаемом типа позже.

Так что вот общий синтаксис для объявления конструктора.

Он начинается с public, а затем идет имя класса и далее следует список параметров в круглых скобках или пустой список, если нет параметров.

Так, конструктор может не иметь параметров, может иметь один или несколько параметров.

В Java могут быть конструкторы с различным числом параметров на основе числа параметров и их типов.

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

Рассмотрим конструктор для NewClass.

Тело конструктора окружено фигурными скобками.

Этот конструктор не имеет параметров и просто инициализирует переменную экземпляра х=0.

В программе Car были объявлены два конструктора для одного и того же класса.

Первый без параметров и ничего не делающий конструктор.

Второй принимал один параметр типа String, и изменял значение переменной владельца экземпляра, как было указано в параметре.

Вопросы

Задача







Укажите вывод выражения 1 и 2.

Ответ: 0.0 и 20.0

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

Первое выражение используется для создания q1.

Первый параметр типа double, а второй параметр имеет тип int.

Таким образом, вызывается третий конструктор и х инициализируется как i – d, что эквивалентно 0,0.

Второе выражение используется для создания q2.

Первый параметр имеет тип int, а второй параметр имеет тип double.

Таким образом, вызывается второй конструктор и х инициализируется как i + d, что эквивалентно 20,0.

Задача





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

Рассмотрим определение класса:







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

Ответ: компилятор выдаст ошибку.

Назад: Пример
Дальше: Методы