привет ходе этого урока мы с вами научимся использовать конструкторы класса в языке java а перед началом я бы хотел порекомендовать сайт айти прагер точка ком на этом сайте вы найдете код и домашние задания и много другой полезной информации ссылка на этот урок на сайте будет описании к этому видео переходите не пожалеете на данный момент мы устанавливаем все значения для объекта уже после его создания то есть вот здесь мы создали объект а чуть позже мы уже устанавливаем для него значение и работаем с ними очень такая же схема сначала создали объект а потом установили уже для него значения и дальше с этими значение уже спокойно работы как было бы круто если бы сразу же при создании объекта если бы вот в этой же строчки кода мы бы могли установить все значения для объектом это бы явно сократила нам код и на самом-то деле мы можем такое сделать при помощи конструкторов по сути конструкторы это как методы который позволяет нам установить значение для объекта сразу же при его создании то есть по факту вот здесь когда мы создаем объект или же вот здесь когда мы создаем объект мы сможем установить значение а дальше уже с этими значениями сразу сможем работать на самом деле здесь будь то класс транспорт или же будь то class main здесь повсюду есть конструктор по умолчанию мы его с вами не видим так как он является скрытым и этот конструктор по умолчанию ничего не делает он не принимает никаких параметров и он ничего не выполняет в ходе цикла своей жизни мы ж давайте с вами первую очередь попробуем как раз и реализовать этот конструктор по умолчанию сделаем его попросту видимым и чтобы нам вообще создать конструктором мы должны сделать вот что во первых мы должны указать модификатор доступа мы с вами сейчас будем указывать модификатор доступа public в таком случае мы никогда говорим о том что мы сможем создать объект на основе этого класса внутри других классов если указать здесь модификатор доступа как проявить это означает то что объект на основе этого класса можно будет создать только внутри этого же класса ну или другими словами объект на основе этого класса по факту нигде нельзя будет создать то есть если вы создаете конструктор с и модификатором доступа проявит вы как бы закрываете доступ к самому классу также конечно же можно использовать еще protector в таком случае вы как бы говорите о том что объект на основе этого класса можно будет создать лишь вы классах наследниках ну об этом мы еще раз полетали поговорим уже в теме наследования мы на данный момент давайте создадим с вами и конструктор на основе класс основе модификатор доступа public и тем самым мы скажем что мы можем создать объект на 100 метров класса внутри других файлов и то вам как раз и нужно здесь при создании конструктора нам не нужно указывать возвращаемый тип здесь не нужно указывать там интеджер байт или что то в этом духе здесь попросту такого не существует но просто сразу прописывайте название причем название вы не можете придумать с головы здесь качестве названия идет точно то же самое название которое у нас установлена для класса в моем случае я указываю здесь транспорт то есть просто модификатор доступа и дальше название класса вот такая идет лайка а далее это уже самая стандартная функция или же самый стандартный метод то есть мы прописываем круглые скобки а также прописываем фигурные скобки ну если оставить все вот в таком формате то это и есть конструктор по умолчанию он у нас изначально был невидимым но он как бы здесь присутствовал и если мы хотим такой же конструктор вдруг создать для класса мейн то он прописывается следующим образом то есть все точно то же самое просто другое название и это и есть конструктор по умолчанию для класса main ну здесь нам попросту не нужен он и так здесь присутствует мы давать его просто удалим отсюда ну если на данный момент я запущу программу вообще ничего не поменяется то есть также сам у нас будет выводиться данные данный будет устанавливаться и будут выводиться то есть этот конструктор он ни на что не повлияло в то же время если кстати здесь укажу все-таки уже модификатор доступа проявит то это сделает следующее здесь при создании объектов у нас теперь вызывается ошибка и ошибка связана с тем что мы по умолчанию используем как бы конструктор который также идет по умолчанию без параметров и попросту мы его больше не можем использовать этот конструктор потому что он идёт с модификатором доступа проявит а соответственно мы не можем просто создать здесь никаких объектов до поскольку конструктор закрыт а мы его как раз здесь и используем по умолчанию то у нас получается вот ошибка нам больше не можем создать объект и поэтому давайте все-таки укажем здесь паблик ну и смотрите внутри этого конструктора мы можем прописать абсолютно любой код который только захотим если нам необходимо при создании объекта предположим подключиться к базе данных о соответственно мы можем создать вот такой вот конструктор а здесь прописать код для подключения к базе данных джоин ту би би да например подключение бадина или же если нам необходимо чтобы при создании объекта сразу какая-то информация выводилась на экран думаю соответственно можем это тоже здесь прописать например я здесь могу написать обжиг трепет и если я запущу запущу сейчас программу он при создании что первое что 2 объект у нас видите выводиться информация что объект был создан видите это вот здесь была выведена а также вот здесь тоже это было выведет при создании объекта у нас было бы видеть некая информация ну и в общем там вы в этом конструкторе можете прописать абсолютно любой тот код который вам нужно чтобы выполнялся при создании любого объекта на основе этого класса помимо этого вы здесь можете еще указать что сам конструктор будет принимать какие-либо параметры какие-либо значения а дальше эти значения вы можете устанавливать в переменные поля которые существуют внутри этого класса и вот предположим что я хочу указать здесь то что мы будем принимать с вами четыре значения это будет скорость вес автомобиля цвета также его координаты далее вот здесь мы возможным тоже будем выводить некую информацию а чуть позже мы будем устанавливать вот эти вот значение будем их устанавливать вы поля нашего класса ну и конечно же значение можно устанавливать вот в таком формате как это мы делали ранее но я предлагаю их не усну я предлагаю не дублировать код а предлагаю просто использовать метод сетов и в methods and values мы с вами передадим все вот эти вот наши параметры то есть спит дальше вы дальше color и конечно же последнее это координаты то бишь здесь мы их конкретно не будем устанавливать но зато мы вызовем метод который и установит у нас все значения насколько этот метод уже просто прописан то давайте его и будем использовать ну предположим такая нас будет лойко и на данный момент нас конечно же вызывается ошибка а рыбка вы видите она уже не связано конкретно с созданием объекта она связана конкретно с и самим конструктором на данный момент при создании объекта мы никаких параметров вот здесь не указан у нас идут круглые пустые скобки мы же сейчас создали конструктор который принимает четыре параметра а соответственно при создании любого объекта мы должны передавать эти четыре параметра поэтому давайте вот здесь для первого объекта я просто скопирую и установлю все вот эти вот 4 значения также возможно мы давайте немного очистим наш код удалим предыдущие комментарии удалимся от валы суда этот метод ну и вообще на самом-то деле мы даже get well is давайте возможность тоже с вами его удалим да наверное давайте мы его тоже с вами действительно удалим и просто вот в этом конструкции пропишем то что мы будем на экран выводить результат выполнения метода get well лишь вот то есть самом же конструкторе мы получается выводим некую информацию потом устанавливаем значение и потом сразу же еще и обращаемся к меня туда где твой луис и по сути выводим все значения на экран поэтому вот эти строчки кода мы тоже на самом-то деле можем удалить ну и на данный момент давайте я пока второй объект не буду переписывать просто его закомментируем если запустить сейчас всю нашу программу то мы заметим вот что у нас будет выводиться информация о том что объект был создан детей объект был создан дальше нас установились значения которые мы здесь передали и значений не сразу были еще и плюсы выведены на экран все обработалось буквально в одной строке кода то есть конструкторы они действительно максимально удобным и по факту при создании объектом сразу установили значение сразу эти значения вывели и сразу обработали какой то возможно дополнительный код который нам был нужен дар все обработалось здесь верно что приятно так это то что в одном классе вы можете создать сколько угодно конструкторов вот предположим что для объекта бмв я бы хотел иметь возможность сразу установить четыре параметра это я сейчас и так делаю это я сейчас и так имея такую возможность а вот например для объекта truck я бы хотел иметь возможность установить не 4 значения сразу же я бы хотел установить возможно только вес и возможно только координаты а все остальное я бы не хотел устанавливать ну или если я захочу это установить то я установлю это конкретно через уже обращение к полям или же через какие-либо другие методы так вот смотрите чтобы мне как бы указать разные конструкторы мне необходимо по сути просто создать еще один здесь конструктор то есть вот мы пропишем здесь public transport и далее мы указываем либо другое количество принимаемых параметров либо другой тип ну тип данных вот этих вот параметров в таком случае эти конструкторы они не будут между собой конфликтовать и все будет обрабатываться верно то есть если здесь укажу другое количество параметров или другой тип данных для этих параметров а это будут разные конструкции все будет обрабатываться верно и вот я хочу указать что мы здесь будем принимать с вами несколько вещей мы будем с вами принимать и такое поле как weight такой вернее параметр как bass и дополнительно мы еще будем принимать байт-кода ней давайте я возможно его скопирую дабы не переписывать и по сути все вот это и будет наш сам по себе конструктор здесь же мы просто обратимся с вами к полю weight и установим в него то значение которое мы здесь принимаем а также обратимся к координат и установим то значение которое тоже мы здесь принимаем ну и возможно давайте мы даже мы видим все эти значения на экран для этого систем out printer and i get well лишь вызовем само по себе метод и здесь же теперь мы просто можем установить исключительно только вес например это 5600 а также можем установить с вами координаты мы вот сюда добавляем вот и все теперь у нас получается следующая схема когда мы создаем объект бмп и передаем сюда четыре параметра то по умолчанию у нас вызывается вот этот вот конструктор потому что он принимаем здесь четыре параметра ну и как бы java она понимает что нам нужно именно работать с этим конструктором если же мы с вами создаём объект through и передаем туда два объекта два параметра то соответственно по умолчанию у нас сразу вызывается вот этот вот конструктор он принимает два значения и опять-таки java это все осознает и будет использовать именно этот конструктор то есть никаких ошибок у нас здесь не вызывается и вы по факту можете создать здесь хотя бы хоть еще 20 например конструкторов главное чтобы все конструкторы отличались по количеству параметров то есть например здесь у меня два здесь 4 или же они могут отличаться по вам даны например здесь я принимаю интеджер и байт а я могу создать еще один например конструктор и по факту здесь я просто буду принимать слот white & white корзиной и опять таки это уже будет абсолютно бо разных конструктор они не будут друг с другом взаимодействовать они будут выполняться корректно да потому что опять же типы данных здесь уже разные идут ну не тот последний конструктор не нужен я его пожалуй удалю то бишь вы можете создавать сколько угодно конструкторов и далее вы можете устанавливать нужное количество параметров сразу при создании объекта ну и давайте мы еще раз пожалуй это все запустим и просто заметим то что для объекта бмп у нас все значения установлены да это и скорость это и вес и все в таком духе а вот для объекта through мы не устанавливали скорость поэтому подставилась значение по умолчанию это например 0.0 была установлена установлено значение для беса значения для цвета не было установлен поэтому тут была поставлена такое значение как нал нал это по факту ничего и она подставляется автоматически если мы говорим про строки на то есть если никакой строки не установить то подставляется значение или другим свами но обозначает что ничего ничего не было установлено а вот координаты были установлены и вот они здесь выведены 100 0 100 все обработалось корректно ну и что еще особо приятно так это то что теперь мы спокойно вот эти вот наши поля можем сделать с модификатором доступа проявит дело в том что теперь все эти поля они используются исключительно внутри только этого класса и поскольку они используются исключительно внутри этого класса то можно их сделать проявит и тем самым как бы сделаем так что доступ к этим полям будет невозможен с объектом теперь нельзя просто создать объект bmb нельзя к нему обратиться ну и нельзя как бы обратиться здесь кр и например polycolor этом всегда будет вызывать ошибку в будущем вы стараетесь тоже придерживаться этой же концепции чтобы у вас все полян шли с модификатором доступа либо проявит либо protected дело в том что вы об существует такая концепция как инкапсуляция ну и эта концепция она гласит о том что все вашей полян они должны быть закрыты для общего использования то бишь если я установлю здесь модификатор доступа public то это поле сможет изменить кто угодно из любого класса и это не совсем верно дело в том что доступ к этим полям он должен осуществляться исключительно либо через различные конструкторы либо через различные методы а напрямую доступа не должно быть поэтому мы сейчас с вами таки указать что напрямую доступа у нас здесь нет этим полям но зато он через различные конструкторы и методы мы по сути будем иметь с вами доступ к этому полю то есть всегда можно обратиться к объекту бмп и обратиться к методу все тлю и через этот метод вы спокойно установите ту же скорость тот же лес и любые другие значения для ваших полей но напрямую установить уже значение будет невозможным ну и еще один момент который стоит рассмотреть ранее мы с вами прописывали все наши параметры с нижним подчёркиванием просто по той причине что если прописать здесь без нижнего подчеркивания в таком случае не понятно что куда мы устанавливаем но на самом-то деле для этого есть более изощренное хорошее решение мы просто можем с вами использовать ключевое слово здесь ключевое слово здесь она говорит нам о том что мы обращаемся к этому же классу из него мы что-либо вытягиваем если я пропишу за из . speed это означает то что я обращаюсь к вот этому вот полю и в это поле я установлю то значение которое я получаю вот здесь в качестве параметра и такое мы давайте лучше пропишем с вами здесь повсюду потому что это является более хорошим верным вариантом решения то есть мы повсюду здесь удаляем нижней вот эти вот подчёркивание и соответственно теперь у нас название они одинаковые но при этом не возникает ошибки что куда мы устанавливаем здесь мы обращаемся к получается полям класса а здесь мы уже устанавливаем значение которые мы получаем из параметров ну и тут повсюду мы на самом деле можем делать очень то же самое для получения значение мы повсюду можем использовать из вот таким вот образом вот ну и по факту вообще лучше переписать весь этот код с используем исключительно из хотя если вы не перепишите код ошибки в этом особо никакой не будет также будет работать корректно вот например транспорт здесь вообще можно не переписывать так как здесь мы вообще не установлен никаких значений а вот здесь можно было бы переписать удалить эти вот нижнее подчеркивание ну и соответственно здесь просто указать зыс . и из . ну и так далее логику я думаю вы поняли будущем вы конечно же можете создавать это все с нижними подчёркивания me но на самом-то деле можно также использовать ключевое слово зыс и говорит что мы конкретно обращаемся к этому классу и из него вытягиваем какое-либо поле или же какой-либо метод а кстати говоря дан здесь можно использовать еще и для методов таком случае вы явно говорите что брать обращайтесь к этому классу именно из-за этого класса вы вытягиваете метод get well лишь ну для методов это уже вам решать можете прописывать можете не прописывать зыс но если нужно явно указать то конечно же прописываете за из ее явно указываете что именно из за этого же класса вы вытягиваете метод get well is ну что ж на этом наш урок подходит концу в этом уроке мы научились вами использовать различные конструкторы ну и за счет этих конструкторов научились устанавливать данные сразу же при создании объектов надеюсь урок вам понравился и если так то не забывайте подписываться на канал а так же вступать в наши соцсети все ссылки на них будут в описании к этому видео у меня ж на этом все до скорых встреч пока