что такое конструктор в джава

Создание объектов и конструкторы

Разбираем основные моменты, связанные с написанием собственных конструкторов классов в Java.

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Процесс создания объектов — один из важных аспектов программирования на Java. Под созданием подразумевают как минимум две основные операции: создание нового объекта класса и инициализацию полей объекта.

В этой статье мы рассмотрим:

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Программист, преподаватель Skillbox. Пишет про Java.

Что такое конструкторы классов

Следовательно, конструктор класса Cat называется Cat (). В результате работы этого конструктора будет создан новый объект класса Cat. Цель конструктора — правильно инициализировать объект перед его использованием.

Самый простой способ создать объект — это строка вида:

Рассмотрим порядок создания объекта. В этой строке выполняется три действия:

Приведённый выше код можно разбить на две строки:

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

В первой строке кода переменная murka объявляется как ссылка на объект типа Cat. Здесь важно понять, что объектная переменная фактически не содержит никакого объекта. Значение любой объектной переменной в Java представляет собой ссылку на объект, размещённый в памяти. В данный момент переменная murka пока ещё не ссылается на объект (содержит пустое значение null).

Во второй строке кода создаётся новый объект типа Cat, а ссылка на него присваивается переменной murka. С этого момента переменная murka оказывается ассоциированной с объектом. Чтобы работать с объектами, нужно сначала создать их и задать их исходное состояние. Затем к этим объектам можно применять методы.

Теперь взглянем на код класса Cat (без методов):

Видно, что все объявленные в классе переменные в результате работы конструктора получили значение — объект готов к использованию. Мы можем вызывать различные методы класса, просматривать значение переменных — никаких ошибок не появится.

Важно: Конструкторы имеются у всех классов, независимо от того, определите вы их или нет, поскольку Java автоматически предоставляет конструктор, используемый по умолчанию (без параметров) и инициализирующий все переменные экземпляра их значениями, заданными по умолчанию.

Для справки: Для числовых типов данных значением по умолчанию является нулевое, для типа boolean — логическое значение false, а для ссылочных типов — пустое значение null.

Но как только вы определите свой собственный конструктор, конструктор по умолчанию предоставляться не будет. Следовательно, если мы удалим конструктор из класса Cat и попытаемся создать объект через new Cat (), то объект будет создан, но все переменные в классе получат значения по умолчанию.

Сразу отметим, что полагаться на действия по умолчанию не следует. Если поля инициализируются неявно, программа становится менее понятной.

Как работают параметризованные конструкторы

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

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

Например, конструкторы ниже являются разными и вполне могут существовать в одном классе и иметь разную логику:

Заметьте, что конструкторы ниже для компилятора одинаковы и вызовут ошибку при запуске программы (тип, количество и порядок следования параметров идентичны):

Разберём пример применения параметризованного конструктора класса Cat с добавленным полем имени:

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

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

Применять ключевое слово this для вызова другого конструктора очень удобно — нужно лишь один раз написать общий код для конструирования объекта.

Важно: вызов другого конструктора всегда должен стоять первой строкой в конструкторе.

Вот пример оптимизации кода первого из конструкторов:

Обратите внимание: Несколько слов насчёт ключевого слова this. Синтаксис языка Java не запрещает использовать имена параметров или локальных переменных, совпадающие с именами переменных экземпляра (класса). В таком случае говорят, что локальная переменная или параметр скрывает переменную экземпляра. При этом доступ к скрытой переменной экземпляра обеспечивается с помощью ключевого слова this.

Приведённый ниже пример конструктора класса Cat показывает, каким образом лучше выполнять присваивание переданных в конструктор параметров переменным класса:

При выборе имён параметров рекомендую в первую очередь ориентироваться на читаемость кода. Чтобы, взглянув на этот код спустя некоторое время, вы сразу могли понять, что здесь происходит.

Но в целом читаемость кода — это отдельная и довольно обширная тема.

Инициализация полей объекта

Основная задача конструкторов — подготовка объекта к работе с ним и установка значений для полей (переменных) объекта. Но есть и другие варианты установки значения для полей. Это явная инициализация и так называемые блоки инициализации.

Явная инициализация — это возможность присвоить полю соответствующее значение указанным ниже образом:

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

Блоки инициализации выглядят так:

Такой блок выполняется каждый раз, когда создаётся объект данного класса. В этом примере начальное значение поля id задаётся в блоке инициализации объекта. Причём неважно, какой именно конструктор используется для создания экземпляра класса. Первым выполняется блок инициализации, а вслед за ним — тело конструктора.

В таком случае блок инициализации будет выполнен при первом обращении к этому классу. Попробуйте выполнить вот такой код:

Что в итоге

При таком многообразии способов инициализации полей класса трудно отследить все возможные пути создания объекта. Поэтому рассмотрим подробнее действия, которые происходят при вызове конструктора:

1. Если в первой строке кода одного конструктора вызывается второй конструктор, то второй конструктор выполняется с предоставляемыми аргументами.

3. Выполняется тело конструктора.

Естественно, код, отвечающий за инициализацию полей, нужно организовать так, чтобы в нём можно было легко разобраться. Например, было бы странным, если бы вызов конструкторов класса зависел от порядка объявления полей. Такой подход чреват ошибками.

Инициализировать статическое поле следует, задавая его начальное значение или используя статический блок инициализации — в случае, если для инициализации статического поля требуется сложный код.

На заметку: важный момент, о котором часто забывают при написании собственных конструкторов, — в конструкторах не должно содержаться никакой бизнес-логики. Их задача — корректное создание объектов и подготовка их к дальнейшему использованию. Вся логика должна находиться в соответствующих методах.

Для изучения — пример, который содержит все элементы, описанные в статье. А именно:

Мы рассмотрели все возможные пути создания объектов и инициализации их полей в Java. Теперь вы сможете создавать свои объекты любым из представленных способов, а также осознанно читать в коде порядок создания объектов других классов.

Источник

Конструктор

Конструктор инициализирует объект непосредственно во время создания. Имя конструктора совпадает с именем класса, включая регистр, а по синтаксису конструктор похож на метод без возвращаемого значения.

В отличие от метода, конструктор никогда ничего не возвращает.

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

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

Мы временно удалили метод setDim() и добавили конструктор. Посмотрим, что получится:

Программа выведет объём коробки, хотя мы не задавали никаких размеров для неё. Благодаря конструктору любая создаваемая коробка будет иметь какой-то зафиксированный объём.

Естественно, вы можете вернуть обратно метод setDim() (см. статью про классы) и установить свои размеры для коробки:

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

Подобно любому методу, у конструктора могут быть аргументы. В аргументах конструктора передаются параметры для инициализации объекта. Например, если у класса Cat имеется конструктор, который получает в качестве аргумента целое число, обозначающее возраст кота, то объекты Cat будут создаваться следующим образом:

Если Cat(int) является единственным конструктором класса, то компилятор не позволит создавать объекты Cat каким-либо другим способом.

Однако вернёмся к коробкам для котов. Созданный нами конструктор не особо полезен, так как создаёт одинаковые коробки. Создадим конструктор с параметрами в классе Box и закомментируйте первый конструктор без параметров:

Если класс содержит один конструктор с параметрами, то вам придётся обязательно указать значения при объявлении класса:

Кстати, с таким конструктором метод setDim() нам уже не нужен. Мы можем задать размеры коробки сразу в конструкторе. Так как скорее всего коробка постоянна и не меняет своих размеров, то метод, пожалуй, лишний. Но если мы будем менять размеры коробки, то метод придётся оставить.

То есть, мы видим, что конструкторы поддерживают перегрузку, как и методы.

Например, мы можем создать ещё один конструктор специально для коробки в виде куба, где все стороны равны:

Вычисляем размер куба:

Используем объект в качестве параметров

Мы пока использовали в качестве параметров в конструкторах простые типы. Но можно передать и объект самого класса. Добавим ещё один конструктор:

В коде программы можно воспользоваться конструктором следующим образом:

Класс Box (исходник)

Вызов перегруженных конструкторов через this()

Имея дело с перегруженными конструкторами, удобно один конструктор вызывать из другого через ключевое слово this. При выполнении конструктора this() сначала выполняется перегруженный конструктор, который соответствует списку параметров. Затем выполняются операторы, находящиеся внутри исходного конструктора, если таковые существуют. Вызов конструктора this() должен быть первым оператором в конструкторе.

Для начала создадим класс, который не использует конструктор this(), чтобы понять разницу.

Мы создали класс с тремя конструкторами. Перепишем класс, используя конструктор this().

Вызов конструктора Cat(8) приводит к выполнению конструктора this(8, 8), что равнозначно вызову конструктора Cat(8, 8).

Что происходит при выполнении оператора:

В этом случае вызывается конструктор this(0), что приводит к выполнению конструктора Cat(0), поскольку именно эта версия конструктора подходит по списку параметров. При этом конструктор Cat(0) по сути вызывает конструктор Cat(0, 0).

Использование перегруженных конструкторов через конструктор this() позволяет исключить дублирование кода, уменьшая время загрузки классов.

Но следует быть осторожным, так как конструкторы, которые вызывают конструктор this(), выполняются немного медленнее.

Закрытый конструктор

Иногда класс создаётся только для хранения каких-то статических полей и статических методов. Таким классам принято давать имена Utils, но это не обязательно. Такому классу не нужен конструктор, но если автор класса его не создал, то система сама создаст конструктор по умолчанию. Такой конструктор не имеет смысла, а также может послужить источником ошибок. Чтобы предохраниться от подобной проблемы вы сами явно должны создать пустрой конструктор и сделать его закрытым.

Строка throw new AssertionError() не является обязательной, но она поможет выявить ошибку, если вы вызовете конструктор в самом классе. Компилятор пропустит такой вариант, но программа завершится с ошибкой.

Подкласс для данного класса вы создать не сможете.

Источник

Конструкторы в Java

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джавачто такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джавачто такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джавачто такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джавачто такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джавачто такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Шаг за шагом

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

1. Вы создаете основное «тело» программы, прописывая метод main:

2. Допустим, Вам нужен объект класса Cat. Класс Cat у вас уже есть, и выглядит он так:

Вы пишете строку, которая должна создать объект класса Cat:

3. В тот момент, когда программа приступает к созданию объекта cat1, она идет в class Cat:

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Тут-то и появляется необходимость в конструкторах. Ведь в первую очередь Java ищет именно конструкторы, которые укажут, как именно создавать объект.

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Явные и неявные конструкторы

Преимущество 1. Контроль над вводом данных.

Сначала, дайте посмотрим на изображение. Какие отличия Вы видите?

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

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

Преимущество 2. Меньше строчек кода.

Вы заметили, как конструктор уменьшает количество строк в коде? Сравните:

Источник

Конструкторы, ключевое слово this, инициализаторы

На предыдущем занятии мы увидели как объявляются классы и создаются их экземпляры с помощью оператора:

ссылка = new имя_класса();

В частности, вот такой строчкой:

создавали объект класса Point:

В действительности, в момент создания объекта всегда происходит вызов специального метода (функции) класса, который называется конструктор:

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

Но у нас в классе Point нет никаких методов, там объявлены только две переменные x, y. Все так, но в Java в любой класс автоматически добавляет конструктор по умолчанию, если явно не записаны никакие другие конструкторы. Именно этот конструктор по умолчанию и вызывался при создании объектов класса Point.

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

имя_класса([аргументы]) <
// тело конструктора (набор операторов)
>

И в нашем случае его можно прописать так:

А что если мы захотим прописать два конструктора и к существующему добавить еще один:

Так тоже можно делать. Теперь наш класс содержит оба конструктора и мы можем вызывать любой из них при создании объектов:

Это называется перегрузкой конструкторов, когда в одном классе несколько конструкторов с разными аргументами. На практике это используется довольно часто.

Ключевое слово this

Давайте теперь предположим, что во втором конструкторе имена аргументов называются также как и поля:

Очевидно, что здесь x, y будут восприниматься как локальные аргументы и никакого отношения к переменным класса x, y они не будут иметь. Но, можно ли как то явно указать, что мы хотим обратиться именно к полям объекта, а не к аргументам конструктора? Да, можно, и делается это с помощью специального ключевого слова this:

По смыслу this – это ссылка на текущий экземпляр объекта. То есть, если нам внутри самого объекта требуется оперировать ссылкой на него, то для этого используется ключевое слово this. Мало того, через this можно вызывать один конструктор из другого. Например, добавим в класс Point еще одно поле color – цвет точки. И будем по умолчанию инициализировать его нулем:

Смотрите что получается. У нас конструкторах происходит дублирование кода. Это плохой стиль программирования. Чтобы этого избежать, можно во втором конструкторе вызвать сначала первый для начальной инициализации полей, а затем, изменить значения координат x, y:

Вот эта строчка this(); как раз выполняет вызов первого конструктора перед изменением полей x, y. В результате, никакого дублирования не происходит. Вот так двояко можно применять ссылку this: и для доступа к полям текущего объекта, и для вызова конструкторов.

Инициализаторы

Давайте еще раз внимательно посмотрим на пример нашего класса и зададимся вопросом: что делает первый конструктор без аргументов? Фактически, он выполняет начальную инициализацию полей класса Point. Именно поэтому мы его отдельно вызываем во втором конструкторе. Но это не лучший ход. В классах языка Java можно создавать специальный блок, который так и называется – инициализатор. Он автоматически выполняется один раз при создании объекта до вызова конструкторов. Записывается инициализатор следующим образом:

Смотрите, здесь в отдельном блоке задаются начальные значения всех переменных класса, а затем, отдельно вызываются конструкторы. При этом, вызывать первый конструктор из второго уже нет необходимости – данные уже инициализированы указанными значениями. Это очень удобно.

Глядя на первый конструктор, в котором нет никакой реализации, возникает соблазн его попросту убрать из класса Point. Давайте попробуем это сделать и посмотрим к чему это приведет:

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

Подвиг 1. Объявить класс Rect для представления прямоугольника, в котором хранятся две координаты: верхнего левого и правого нижнего углов. Реализовать три конструктора: первый – без аргументов; второй с четырьмя аргументами для двух координат; третий – с четырьмя аргументами (координата левого верхнего угла, ширина и высота). Создать несколько экземпляров с вызовом разных конструкторов и выводом значений полей в консоль.

Подвиг 2. Объявить класс Triangle, хранящий три координаты вершин. Координаты представить в виде ссылок на класс Point, который рассмотрен на этом занятии. Реализовать два конструктора: без аргументов и с шестью аргументами (по два на каждую координату). Создать два объекта, вывести координаты вершин по каждому объекту в консоль.

Подвиг 3. Объявить класс Line для представления линии на плоскости, хранящий две координаты: начало и конец линии. Создать два объекта этого класса и в функции main() определить: пересекаются ли эти две линии.

Видео по теме

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#11 Концепция объектно-ориентированного программирования (ООП)

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#12 Классы и создание объектов классов

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#13 Конструкторы, ключевое слово this, инициализаторы

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#14 Методы класса, сеттеры и геттеры, public, private, protected

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#15 Пакеты, модификаторы конструкторов и классов

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#16 Ключевые слова static и final

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#17 Внутренние и вложенные классы

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#18 Как делается наследование классов

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#19 Ключевое слово super, оператор instanceof

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#20 Модификаторы private и protected, переопределение методов, полиморфизм

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#21 Абстрактные классы и методы

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#24 Анонимные внутренние классы

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#25 Перечисления (enum)

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#26 Обобщения классов (Generics)

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#27 Ограничения типов, метасимвольные аргументы, обобщенные методы и конструкторы

что такое конструктор в джава. Смотреть фото что такое конструктор в джава. Смотреть картинку что такое конструктор в джава. Картинка про что такое конструктор в джава. Фото что такое конструктор в джава

#28 Обобщенные интерфейсы, наследование обобщенных классов

© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

Источник

36) Конструкторы Java

Что такое конструктор в Java?

CONSTRUCTOR — это специальный метод, который используется для инициализации вновь созданного объекта и вызывается сразу после выделения памяти для объекта. Его можно использовать для инициализации объектов до желаемых значений или значений по умолчанию во время создания объекта. Кодеру не обязательно писать конструктор для класса.

Если пользовательский конструктор не предоставлен для класса, компилятор инициализирует переменные-члены значениями по умолчанию.

В этом уроке вы узнаете

Правила создания конструктора Java

Пример 1. Создайте свой первый конструктор Java

Шаг 1) Введите следующий код в вашем редакторе.

Шаг 2) Сохраните, запустите и скомпилируйте код. Соблюдайте вывод.

Вывод:

Перегрузка конструктора

Перегрузка конструктора — это техника в Java, в которой класс может иметь любое количество конструкторов, которые различаются в списке параметров. Компилятор различает эти конструкторы, учитывая количество параметров в списке и их тип.

Примеры допустимых конструкторов для класса Account:

Пример 2 : чтобы понять перегрузку конструктора

Шаг 1) Введите код в редакторе.

Шаг 2) Сохраните, скомпилируйте и запустите код.

Шаг 3) Ошибка =? Попробуйте отладить ошибку, прежде чем переходить к следующему шагу.

Но если вы указываете параметризованный конструктор, такой как Demo (int a), и хотите использовать конструктор по умолчанию Demo (), вам обязательно нужно его указать.

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

Шаг 5) Раскомментируйте строку № 4-8. Сохраните, скомпилируйте и запустите код.

Конструктор цепочки

Рассмотрим сценарий, в котором базовый класс расширяется дочерним элементом. Всякий раз, когда создается объект дочернего класса, конструктор родительского класса вызывается первым. Это называется построением цепочек.

Пример 3: для понимания цепочки конструктора

Шаг 1) Скопируйте следующий код в редактор.

Шаг 2) Запустите код. Благодаря созданию цепочки конструктора при создании объекта дочернего класса DemoChild сначала вызывается конструктор Demo () родительского класса, а затем создается конструктор дочернего класса DemoChild (). Ожидаемый результат =

Шаг 3) Вы можете наблюдать, как конструктор родительского класса Demo переопределяется. Что если вы хотите вызвать переопределенный конструктор Demo (int a) вместо конструктора по умолчанию Demo () при создании дочернего объекта?

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

Синтаксис:-

Пример: если ваш конструктор похож на Demo (String Name, int a), вы укажете super («Java», 5). Если используется, ключевое слово super должно быть первой строкой кода в конструкторе дочернего класса.

Шаг 4) Раскомментируйте строку № 26 и запустите код. Соблюдайте вывод.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *