Здравствуйте! Я не давно начал изучать программирование и меня испугал тот факт, что я почти ничего не понимаю в чужом коде, даже в самом простейшем . Это временно или это я такой ? Хотелось бы узнать ваше мнение ) За ранее спасибо !
Спасибо огромное! до этого читал много источников, даже проходил видео-курс по работе, но у вас есть талант именно подмечать те детали, с которым обычно юзеру нужно дать более подробную конкретику. В тех исочников где я черпал знания, игнорируют, пожалуй этот важный момент для дальнейшего понимания
Спасибо большое!! Учите великолепно, все становится сразу на свои места, какие методы и конструкторы нам говорили :) !!Рада наконец-то ступать на тропу понимания джавы Я с удовольствием сажусь учиться даже в 10 вечера) Желаю успехов !!!!
Очередной урок принес много положительных эмоций и благодарность учителю.Толково,подробно с примерами и пошаговыми объяснениями.Талантливый человек как в программировании,так и в обучении-это сразу понимаешь.Тема методов одна из важнейших для понимания,так как зная,как, что,кем,когда и откуда вызывается, вы не будешь "плавать" в написании правильного кода и в построении программы.Я изучал Java разными методами и через разные ресурсы,но так толково теорию НИКТО и НИГДЕ не объяснил.Огромное спасибо за прошедший урок.Идем дальше!
Учу java по оф. документации и захожу на ютуб когда не до конца понимаю материал и постоянно смотрю ваши уроки, материал усваивается очень легко, спасиб за ваш труд, лукас и подписка однозначно.)
Доброго времени суток. Большая благодарность за понятный и доступный урок. Подскажите, пожалуйста, в коде, который в видео нужны ли два Сеттера setName и setAge, если их функционал выполняют эти 3 конструктора ? Можно ли два Сеттера убрать из кода ?
Великолепное объяснение!Из вас получится прекрасный преподаватель! Так держать! Думаю, что если не зароете свой талант, то сможете писать книги не хуже, а то и лучше, Шилдта.
Учусь по Шилдту, но время от времени поглядываю в уроки сюда, и они очень помогают. У Шилдта есть проблема сразу без объяснений прыгать в сложную программу, где ты не сразу логику и алгоритм можешь понять, а тебе еще новую тему параллельно понять нужно. Все же я за подход, когда от легкого к сложному постепенно переходят. Но и все таки некоторые тонкости у Шилдта подробнее будут, иногда отстутвуют вовсе. Так что лучше иметь несколько источников.
Вопрос: в чём значение написания в main(String[ ] args)? Что значат эти элементы (3шт.) внутри скобок? Почему именно они там фигурируют? В каком случае они подходят и как правильно понимать, что писать в скобках в main?
12/20/2019 УРОК 20 КОНСТРУКТОРЫ Конструктор инициализирует поля для объекта В этом уроке поля дополнительного класса опять приватные Конструкторы нужны для того чтобы полям объекта присуждались значения одновременно с созданием самого объекта. Если пользователь не присвоит им значения, то им значения всё равно присвоятся (там будут какие-то значения которые будут присуждаться в таком случае когда юзер не присудил) 3:25 начинаем писать конструкторы для нашего случая 6:05 - создали конструктор в дополнительном классе и внутри записали код выводящий на экран “Привет с первого конструктора” Три конструктора. Первый - если вызвали и не дали параметры Второй - если вызвали но дали один параметр ИТОГ: Конструктор нужен для того что бы во время создания объекта в основном классе незамедлительно создавался объект со значениями Можно иметь в одном классе несколько методов с одним именем с одним условием что у них разное количество параметров в скобочках
не разное количество а комбинация параметров, например можно иметь 2 метода или же Конструктора с одними параметрами, где 1) просто int num 2) массив типа int[ ] arr можно иметь даже 100 методов или конструкторов с одинаковой количество параметром
Прекрасное изложение материала, без воды, всё по порядку и по существу. Большое спасибо. Есть вопрос по конструкторам. В какой ситуации может быть полезен вызов конструктора внутри конструктора. В уроках встречаю код class Something { int a; int b; public Something(int a, int b) { this(a,b); } }
Спасибо! По вопросу: Давайте я сразу приведу пример, чтобы стало понятно. У нас есть класс Person, у которого есть поле age. class Person { private int age; } Мы хотим добиться следующего: если при создании человека указывается его возраст - назначить возраст этому человеку, если возраст НЕ указывается - назначить возраст по умолчанию. Предположим, что возраст по умолчанию - 30. Тогда этого мы можем добиться следующей конструкцией: class Person { private int age; // пустой конструктор Person() { this(30); // вызываем другой конструктор, назначаем возраст по умолчанию } // непустой конструктор Person(int age) { this.age = age; } } В данном примере, если при создании объекта вызывается конструктор с возрастом (пример: new Person(15)), то вызывается непустой конструктор. Если вызывается конструктор без возраста (пример: new Person()), то внутри этого пустого конструктора вызывается конструктор с возрастом, который и назначает полю age значение по умолчанию. У вас может возникнуть вопрос: почему в пустом конструкторе мы просто не назначим поле напрямую - this.age = 30; Да, так тоже правильно. Я просто показал вам один из примеров, но иногда вызов конструктора внутри другого конструктора бывает полезным.
Например когда в конструкторе должна быть какая-то сложная логика. При таком подходе эта логика не дублируется, а помещается только в один конструктор, а все остальные конструкторы вызывают его.
Не совсем понятно как взаимодействуют конструкторы и геттеры/сеттеры (геттеры/сеттеры они просто должны быть и все? или к каждому конструктору свои? а если в конструкторе уже указаны параметры?).
как можно перегрузить конструктор, не дублируя код, то есть другой коструктор будет иметь частично похожее тело, но при этом похожая часть этого тела не будет выглядет также как у первого?
Очень нравится Ваш канал, спасибо за труд! Вопрос: если сделать конструктор с именем и возрастом, как к нему прилепить сеттер с проверкой? Например, чтобы при создании объекта в параметр не передавали отрицательный возраст и т.д. Спасибо!
прямо в конструктор ставите условие if-else для каждого из параметров. например: public Car (String model){ if (model.isEmpty()){ System.out.println("Пустое поле."); } else { this.model = model; }
Все же в прошлых уроках у нас не было никакого конструктора и джава использовала дефолтный конструктор. Есть же разница между пустым и дефолтным конструктором. Верно же понимаю? Спасибо за ответ
Что не урок то плодтвист в стиле: "на самом деле в прошлом уроке всё происходило так, существовал пустой конструкт, но ОН НИЧЕГО НЕ ДЕЛАЛ" и мы такие:"Аааааа..."
Добрый день, у меня почему-то говорит, что класс Human типо уже есть (из предыдщуего урока). А у вас нет такой проблемы? Пришлось изменить human на human1
Начиная с 10:40, когда в конструкторе без параметров мы устанавливаем значения по умолчанию. Но ведь там не нужно использовать this. Или это условность, чтоб не путаться, пока не прошли это ключевое слово?
ты сказал перегрузка консрукторов, а потом перегрузка методов. выходит это одно и тоже? То есть консруктор и есть метод? и если у нас есть различные конструкторы с одинакоым названием - это и есть перегрузка метода(конструктора)?
Почему заменяют? Это еще один способ инициализировать поля ваших объектов. Конструктор инициализирует поля только при создании объекта, а сеттеры могут инициализировать поля после создания объекта и также могут менять значения полей.
в каком-то смысле да, с помощью сетеров можно изменять значения полей обьекта сколько угодно раз, с помощью конструктора всего 1 раз, при создании обьекта
проще ведь при создании объекта сразу указать его параметры, чем через сеттер. это быстрее + меньший объем кода. плюс Наиль же сказал, что без конструктора у нас есть возможность создать пустой объект класса, а это бред, т.е. зачем создавать пустой объект класса и потом начинять его полями, если можно сразу создать объект класса с полями?
а сет не нужны для обращения потому что мы ведь создаем конструктор класса, который имеет поля. они ему принадлежат соответственно доступны и конструктору этого класса.
На сколько я понимаю, параметр по умолчанию в качестве аргумента не работает нормально в Java. То что вы предложили в конце видео..., если вы создадите новый экземпляр без параметров, выведет все норм. Но в случае если впишете свои данные в качестве аргументов, то будет ошибка.
что будет с перегруженньІми методами если у меня public void megaMethod (String str){} public void megaMethod (Human human) {} і я визиваю myMegaObject.megaMethod(null);
Наверно сюда мало кто заглядывает, но на всякий случай задам вопрос. Если в нашем классе Human мы уже создали геттеры и сеттеры, то на сколько неправильным было бы заполнять конструктор с помощью this.setName(name) и this.setAge(age)? Влияет ли это как нибудь на производительность? И вообще такое практикуется на настоящих проектах?
@@dmitriykobets1944 наверное уже поздно но для других людей которые наткнуться на этот вопрос: параметры конструктара передадуться сеттеру, а сеттер установит значения.
Получается, что если конструктор содержит аргументы, то сеттеры бесполезны? Ведь получается мы обращаемся к переменным конструктора напрямую в обход сеттера, когда создаем новый объект? А если сделать конструктор без параметров, то зачем он вообще нужен? Получается 2 варианта или мы удобно одной стройкой создаем объект с указанием аргументов в обход сеттера, либо мы значения каждой переменной назначаем отдельными строками(тогда получается конструктор особо и не нужен). Вот как одновременно сделать так, чтобы можно было создавать объекты с проверкой заносимых значений через сеттер и чтобы при этом объект создавался в одну строку?
не понимаю почему пользователь задает сколько параметров будет в обьекта.Мы же пишем код и делаем что нужно ввести пользователю для того чтоб создать обьект.Может обьяснить?
Почему же пользователь задаёт? Набор необходимых параметров, которые необходимо будет передать в конструктор при создании экземпляра класса задаёт именно разработчик при описании конструктора в теле пользовательского класса (ведь именно мы задаём сигнатуру метода, а не какой-нибудь абстрактный пользователь). Пользователь, это тот человек, который будет пользоваться конечным продуктом посредством разрешённого для этих целей интерфейса. Если разработчик посчитает нужным, чтобы при создании экземпляра класса обязательно были проинициализированы всё поля класса (к примеру, имя и возраст человека), то он создаст в теле класса один единственный конструктор, который будет принимать на вход аргументы отвечающие за инициализацию возраста и имени. В этом случае, пользователь не сможет оставить параметры пустыми или поставить свой набор параметров, которые не будут соответствовать сигнатуре конструктора, который был описан в пользовательском классе.
Регистрируйтесь на курс "Продвинутая Java": czcams.com/video/rRe1vT0SDD8/video.html
Практикуйтесь в написании Java кода: java-marathon.tilda.ws
Здравствуйте! Я не давно начал изучать программирование и меня испугал тот факт, что я почти ничего не понимаю в чужом коде, даже в самом простейшем . Это временно или это я такой ? Хотелось бы узнать ваше мнение ) За ранее спасибо !
огромный вопрос - если мы создаём конструктор класса, то получается гетеры-сетеры можно уже не использовать???
@@guestguest6442 а если нам нужно будет поменять значение в процессе работы программы . Как мы их зададим?
Прохожу курс на джавараш, там бывают непонятные какие-то объяснения, поэтому параллельно смотрю ролики. Мозаика в голове складывается, спасибо!
Прошел все уроки, очень доволен! Нигде не встречал таких офигенных уроков. Спасибо тебе огромное, жду продолжения)
+Evgeniy Shypitsyn Спасибо вам! Совсем скоро начну делать.
+javaRussia Жду)
@@zhenyashypitsyn9647 как судьба сложилась?
@@gohokla2710 вот тоже интерестно) либо забил, либо ушел с головой)
Спасибо огромное! до этого читал много источников, даже проходил видео-курс по работе, но у вас есть талант именно подмечать те детали, с которым обычно юзеру нужно дать более подробную конкретику. В тех исочников где я черпал знания, игнорируют, пожалуй этот важный момент для дальнейшего понимания
Просто великолепно. Такого учителя, да в университет. Не прогуливал бы)
Дружище , спасибо тебе огромное за твой вклад! ценю!
Спасибо, огромное за бесплатный курс. И с наступающем уже 2022 )
Просмотрел 20 уроков. Пока все просто и понятно. Признателен за такие полезные сведения, изложенные в максимально доступном виде!
Прекрасно объясняете! Спасибо за ваш труд! Много есть людей, которые умеют программировать, но мало тех, кто умеет доступно объяснить.
Спасибо за уроки! В голове все устаканивается, особенно после прочтения других ресурсов. Жду продолжения!
как судьба сложилась?
Лучшее, что я находил в сети! Контент золото! Спасибо💪
Классные уроки, СПАСИБО! Жду продолжения.
Спасибо за уроки, очень достойно ! Ждем продолжения !
+Владислав Карпенко я обязательно доделаю эти уроки в ближайшее время, спасибо что ждете:)
Отличные уроки, спасибо!
Спасибо большое!! Учите великолепно, все становится сразу на свои места, какие методы и конструкторы нам говорили :) !!Рада наконец-то ступать на тропу понимания джавы Я с удовольствием сажусь учиться даже в 10 вечера) Желаю успехов !!!!
Очередной урок принес много положительных эмоций и благодарность учителю.Толково,подробно с примерами и пошаговыми объяснениями.Талантливый человек как в программировании,так и в обучении-это сразу понимаешь.Тема методов одна из важнейших для понимания,так как зная,как, что,кем,когда и откуда вызывается, вы не будешь "плавать" в написании правильного кода и в построении программы.Я изучал Java разными методами и через разные ресурсы,но так толково теорию НИКТО и НИГДЕ не объяснил.Огромное спасибо за прошедший урок.Идем дальше!
Согласен с тобой полностью Сколько искал не мог нормальных уроков найти А эти понятны и просты .СПС УЧИТЕЛЮ !!!
Спасибо за уроки. Ждём новые уроки.
Много всего перечетал про конструкторы, у тебя самое доступное обьяснение этой темы, буду смореть и другие твои видое. Спасибо !!!
Очень хорошо объясняете
Жду с нетерпением новых уроков
+Tima Tima Будут, пока занят очень.
+javaRussia перегрузка вроде бы возможна и до тех пор пока тип метода разный, а не только параметры или я не прав?
Данил Ситдиков Тип возвращаемого значения метода?
Нет, перегрузка невозможна если у методов одинаковые имена и параметры.
понял) спасибо за уроки! Ждемс еще
Данил Ситдиков Пожалуйста!
Учу java по оф. документации и захожу на ютуб когда не до конца понимаю материал и постоянно смотрю ваши уроки, материал усваивается очень легко, спасиб за ваш труд, лукас и подписка однозначно.)
Спасибо за уроки!
До этого всегда скептический относился к материалам в ютюб, но этот канал прям супер!
Молодец!
посмотрите еще фрилансер по жизни
Второй раз заглянул , и оба раза понравилось. Хорошо объясняешь и доходчиво . Палец в верх. Спасибо. + подписка
Спасибо огромное за вашу работу!!!!
ну оочень доходчиво! спасибо!
Очень хорошо объясняете!
Уроки очень понятные и доступные. Респект)))
Спасибо большое за урок!
блин, и правда крутые курсы, спасибо :)
Все предельно понятно, огромное спасибо!
Какой отличный урок по конструкторам. Точно то, что мне нужно. Спасибо, огромное.
Пожалуйста!
Ждем продолжения
У вас талант объяснять !!
Все понятно. Спасибо!
Огромное спасибо!!!!!!! всё понятно, ура!
блин спасибо большое что объясняете так подробно
Отлично обьяснил!
Очень крутые видосы, у автора талант к изложению материала. Знать можно много, а вот передать знания это уже искусство. Спасибо Вам большое.
Пожалуйста! :)
Спасибо Вам огромное!!!
спасибо,это видео помогло мне написать свой конструктор!!!
Спасибо!
Спасибо ДруГг, помог)))
спасибо интересно , а главное просто
И вам спасибо!
Коротко и по сути!)из 2021!
Смотрю почти все уроки что есть в youtub-е.. :) ваши очень понятны, по существу и с наглядными примерами... Спасибо! хотелось бы уроков по больше...
Пожалуйста! Они будут :)
как судьба сложилась
Вы лучший!!!
спасибо за видео
Спасибо тебе большое
Доброго времени суток. Большая благодарность за понятный и доступный урок. Подскажите, пожалуйста, в коде, который в видео нужны ли два Сеттера setName и setAge, если их функционал выполняют эти 3 конструктора ? Можно ли два Сеттера убрать из кода ?
Спасибо большое
Благодарю!
спасибо большое!!!
Великолепное объяснение!Из вас получится прекрасный преподаватель! Так держать! Думаю, что если не зароете свой талант, то сможете писать книги не хуже, а то и лучше, Шилдта.
Учусь по Шилдту, но время от времени поглядываю в уроки сюда, и они очень помогают. У Шилдта есть проблема сразу без объяснений прыгать в сложную программу, где ты не сразу логику и алгоритм можешь понять, а тебе еще новую тему параллельно понять нужно. Все же я за подход, когда от легкого к сложному постепенно переходят. Но и все таки некоторые тонкости у Шилдта подробнее будут, иногда отстутвуют вовсе. Так что лучше иметь несколько источников.
Спасибоууу!
Какой же ты сильный !
уфффф наконец то дошло зачем эти конструкторы нужны!!на других ресурсах не могут толком объяснить,походу сами не понимают ))
Хорошие уроки
Вопрос: в чём значение написания в main(String[ ] args)? Что значат эти элементы (3шт.) внутри скобок? Почему именно они там фигурируют? В каком случае они подходят и как правильно понимать, что писать в скобках в main?
Спасибо
12/20/2019
УРОК 20 КОНСТРУКТОРЫ
Конструктор инициализирует поля для объекта
В этом уроке поля дополнительного класса опять приватные
Конструкторы нужны для того чтобы полям объекта присуждались значения одновременно с созданием самого объекта. Если пользователь не присвоит им значения, то им значения всё равно присвоятся (там будут какие-то значения которые будут присуждаться в таком случае когда юзер не присудил)
3:25 начинаем писать конструкторы для нашего случая
6:05 - создали конструктор в дополнительном классе и внутри записали код выводящий на экран “Привет с первого конструктора”
Три конструктора.
Первый - если вызвали и не дали параметры
Второй - если вызвали но дали один параметр
ИТОГ: Конструктор нужен для того что бы во время создания объекта в основном классе незамедлительно создавался объект со значениями
Можно иметь в одном классе несколько методов с одним именем с одним условием что у них разное количество параметров в скобочках
не разное количество а комбинация параметров, например можно иметь 2 метода или же Конструктора с одними параметрами, где
1) просто int num
2) массив типа int[ ] arr
можно иметь даже 100 методов или конструкторов с одинаковой количество параметром
@@wickedtorpedo75 то есть их колво не вляиет, важно ли то что они передают
@@user-om9wk6wg1f ага
Есть ли в планах видео о статических блоках?
Ку из JavaRush)
Можем ли мы в конструктор вшить проверку вводимых в параметр данных при создание объекта?
Здравствуйте! Подскажите на какие клавиши вы нажали что вернули то, что удалили? Пожалуйста подскажите.🤨😔
Грамотные и опытные, а для чего в этом примере нужны методы setName и setAge?
Прекрасное изложение материала, без воды, всё по порядку и по существу. Большое спасибо. Есть вопрос по конструкторам. В какой ситуации может быть полезен вызов конструктора внутри конструктора. В уроках встречаю код
class Something
{
int a;
int b;
public Something(int a, int b)
{
this(a,b);
}
}
Спасибо!
По вопросу:
Давайте я сразу приведу пример, чтобы стало понятно.
У нас есть класс Person, у которого есть поле age.
class Person {
private int age;
}
Мы хотим добиться следующего: если при создании человека указывается его возраст - назначить возраст этому человеку, если возраст НЕ указывается - назначить возраст по умолчанию. Предположим, что возраст по умолчанию - 30.
Тогда этого мы можем добиться следующей конструкцией:
class Person {
private int age;
// пустой конструктор
Person() {
this(30); // вызываем другой конструктор, назначаем возраст по
умолчанию
}
// непустой конструктор
Person(int age) {
this.age = age;
}
}
В данном примере, если при создании объекта вызывается конструктор с возрастом (пример: new Person(15)), то вызывается непустой конструктор. Если вызывается конструктор без возраста (пример: new Person()), то внутри этого пустого конструктора вызывается конструктор с возрастом, который и назначает полю age значение по умолчанию.
У вас может возникнуть вопрос: почему в пустом конструкторе мы просто не назначим поле напрямую - this.age = 30;
Да, так тоже правильно. Я просто показал вам один из примеров, но иногда вызов конструктора внутри другого конструктора бывает полезным.
Например когда в конструкторе должна быть какая-то сложная логика. При таком подходе эта логика не дублируется, а помещается только в один конструктор, а все остальные конструкторы вызывают его.
Не думав,що колись напишу коментар)).Але ти просто великий молодець,з твоїми уроками дуже легко все сприймається і є багато мотивації.
Не совсем понятно как взаимодействуют конструкторы и геттеры/сеттеры (геттеры/сеттеры они просто должны быть и все? или к каждому конструктору свои? а если в конструкторе уже указаны параметры?).
сеттеры позволяют менять значение, если надо.
как можно перегрузить конструктор, не дублируя код, то есть другой коструктор будет иметь частично похожее тело, но при этом похожая часть этого тела не будет выглядет также как у первого?
Очень нравится Ваш канал, спасибо за труд! Вопрос: если сделать конструктор с именем и возрастом, как к нему прилепить сеттер с проверкой? Например, чтобы при создании объекта в параметр не передавали отрицательный возраст и т.д. Спасибо!
Задался тем же вопросом. Условие поставил прямо в конструктор и получилось ограничение:
прямо в конструктор ставите условие if-else для каждого из параметров. например:
public Car (String model){
if (model.isEmpty()){
System.out.println("Пустое поле.");
} else {
this.model = model;
}
4:00 модификатор доступа дефолтного конструктора всегда совпадает с модификатором доступа его класса
Все же в прошлых уроках у нас не было никакого конструктора и джава использовала дефолтный конструктор. Есть же разница между пустым и дефолтным конструктором. Верно же понимаю? Спасибо за ответ
Спасибо за уроки. Так как ты никто не объяснял еще... ИМХО
Что не урок то плодтвист в стиле: "на самом деле в прошлом уроке всё происходило так, существовал пустой конструкт, но ОН НИЧЕГО НЕ ДЕЛАЛ" и мы такие:"Аааааа..."
Всем привет! Кто ни будь может написать показать пример кода на котором будет ЧЁТКО понятна разница между методом и конструктором?
Спасибо!
Разве сокрытие данных - это инкапсуляция? может немного стоит разделять эти понятия?
Can you please tell me where I can practice on these topics?
rn
И очень бы хотелось видео о нитях.
Серия видео о многопоточности обязательно будет.
Спасибо. Это очень здорово!
Добрый день, у меня почему-то говорит, что класс Human типо уже есть (из предыдщуего урока). А у вас нет такой проблемы? Пришлось изменить human на human1
Да, в проекте не может быть классов с одинаковыми названиями. Старый класс Human можно удалить.
Начиная с 10:40, когда в конструкторе без параметров мы устанавливаем значения по умолчанию. Но ведь там не нужно использовать this. Или это условность, чтоб не путаться, пока не прошли это ключевое слово?
Да, чтобы не путаться.
Спасибо за видео. Немного не понял, зачем тогда сеттеры, если мы через конструктор сразу указываем и имя и возраст.
вот и меня мучает этот вопрос! Тут методы setName и setAge зачем нужны?
Чтобы менять имя и возраст извне после создания объекта. В 18 лет, например, урождённой Вадик превращается в Машу.
ты сказал перегрузка консрукторов, а потом перегрузка методов. выходит это одно и тоже? То есть консруктор и есть метод? и если у нас есть различные конструкторы с одинакоым названием - это и есть перегрузка метода(конструктора)?
Привет, idea заставляет меня этот класс human делать static, хотя делал все также, как в видео(
Неиль, огромный вопрос - если мы создаём конструктор класса, то получается гетеры-сетеры можно уже не использовать???
Нет, обычно в классах бывают и конструкторы, и геттеры/сеттеры.
@@alishevN так и понял, спасибо! Так сказать - лучше создавать и конструктор и геттеры-сеттеры вместе в классе...
А если передать в конструктор пустую строку и отрицательное число то конструктор проинициализирет эти значение? Даля чего тогда сеттер?
Если сделать конструктор(как в видео, с именем и возрастом), то сеттер (с именем и возрастом) не нужен?
Не нужен, если не предполагается менять имя и возраст у созданного объекта позднее
а как тогда сеттеры и гетеры
Получается, что конструкторы заменяют сеттеры?
Почему заменяют?
Это еще один способ инициализировать поля ваших объектов.
Конструктор инициализирует поля только при создании объекта, а сеттеры могут инициализировать поля после создания объекта и также могут менять значения полей.
в каком-то смысле да, с помощью сетеров можно изменять значения полей обьекта сколько угодно раз, с помощью конструктора всего 1 раз, при создании обьекта
Почему в конструкторе мы обращаемся напрямую к полям, а не через методы set?
проще ведь при создании объекта сразу указать его параметры, чем через сеттер. это быстрее + меньший объем кода. плюс Наиль же сказал, что без конструктора у нас есть возможность создать пустой объект класса, а это бред, т.е. зачем создавать пустой объект класса и потом начинять его полями, если можно сразу создать объект класса с полями?
а сет не нужны для обращения потому что мы ведь создаем конструктор класса, который имеет поля. они ему принадлежат соответственно доступны и конструктору этого класса.
На сколько я понимаю, параметр по умолчанию в качестве аргумента не работает нормально в Java. То что вы предложили в конце видео..., если вы создадите новый экземпляр без параметров, выведет все норм. Но в случае если впишете свои данные в качестве аргументов, то будет ошибка.
приветствую! в этом уроке не запускается программа, ошибка следующая: duplicate class: Human
подскажи пжл, в чем проблема?!
заранее очен благодарен!
В lesson19 поменяйте название класса Human на Human19 например
@@murtazina_raisa спасибо!
что будет с перегруженньІми методами если у меня
public void megaMethod (String str){}
public void megaMethod (Human human) {}
і я визиваю myMegaObject.megaMethod(null);
только наверное перегрузка конструкторов, а не методов) Ну в плане терминологии. Ну да а принцип тот же.
Наверно сюда мало кто заглядывает, но на всякий случай задам вопрос. Если в нашем классе Human мы уже создали геттеры и сеттеры, то на сколько неправильным было бы заполнять конструктор с помощью this.setName(name) и this.setAge(age)? Влияет ли это как нибудь на производительность? И вообще такое практикуется на настоящих проектах?
Это нормальный подход. В конструкторе можно вызывать сеттеры.
@@alishevN тогда получается мы и в сеттерах задаем значение name и age, и в параметрах объекта их задаем? как это так???
@@dmitriykobets1944 наверное уже поздно но для других людей которые наткнуться на этот вопрос: параметры конструктара передадуться сеттеру, а сеттер установит значения.
Получается, что если конструктор содержит аргументы, то сеттеры бесполезны? Ведь получается мы обращаемся к переменным конструктора напрямую в обход сеттера, когда создаем новый объект? А если сделать конструктор без параметров, то зачем он вообще нужен? Получается 2 варианта или мы удобно одной стройкой создаем объект с указанием аргументов в обход сеттера, либо мы значения каждой переменной назначаем отдельными строками(тогда получается конструктор особо и не нужен). Вот как одновременно сделать так, чтобы можно было создавать объекты с проверкой заносимых значений через сеттер и чтобы при этом объект создавался в одну строку?
А зачем тогда в этой программе нужны сет методы? Если мы получаем доступ к приват полям через конструкторы?
Ты получаешь доступ не к приват полю, а к значению, которое это поле хранит
В конце урок же не закончен ,у меня не вышло вызвать этот пустой метод!
public Human() {
this.name = "Имя по умолчанию";
this.age =0;
Ни фига у меня тоже не вызывает я в ij работаю!!!!
Он просто присваивает, вы этого не видите, все работает
Жаль что видео всего в 720p
не понимаю почему пользователь задает сколько параметров будет в обьекта.Мы же пишем код и делаем что нужно ввести пользователю для того чтоб создать обьект.Может обьяснить?
Почему же пользователь задаёт? Набор необходимых параметров, которые необходимо будет передать в конструктор при создании экземпляра класса задаёт именно разработчик при описании конструктора в теле пользовательского класса (ведь именно мы задаём сигнатуру метода, а не какой-нибудь абстрактный пользователь). Пользователь, это тот человек, который будет пользоваться конечным продуктом посредством разрешённого для этих целей интерфейса. Если разработчик посчитает нужным, чтобы при создании экземпляра класса обязательно были проинициализированы всё поля класса (к примеру, имя и возраст человека), то он создаст в теле класса один единственный конструктор, который будет принимать на вход аргументы отвечающие за инициализацию возраста и имени. В этом случае, пользователь не сможет оставить параметры пустыми или поставить свой набор параметров, которые не будут соответствовать сигнатуре конструктора, который был описан в пользовательском классе.
У меня почему-то при создании класса Human ругается на то, что название Human уже было в уроке 19
у меня тоже
@@p0gchamp попробуйте переименовать в Human1 например.
Это из-за того, что класс Human был уже в другом пакете