Ссылки и содержание: 🔹 Тесты и практика по этому уроку: t.me/KotlinBasicsBot?start=youtube 🔹 Текстовая версия урока: clck.ru/39VGHt 🛠 Код из всех уроков: t.me/ievetrov_dev 🛠 Личный телеграм канал про путь разработчика: t.me/ievetrov_dev ✅ Вопросы и ответы для Android собеседований: t.me/AndroidSprint_Interview 🔹 Бесплатный курс по Android: clck.ru/376Zab 🔹 VK: vk.com/ievetrov.development 00:00 Что такое конструктор в Kotlin 01:24 Блок 1: пустой конструктор 03:34 Блок 2: основной конструктор (primary constructor) 05:58 Блок 3: упрощенная форма основного конструктора 06:27 Блок 4: вторичный конструктор (secondary constructor) 09:32 Инициализатор
7:25 а почему в главный конструктор не прописали свойство по умолчанию isNeedToPrepare, как в случае класса Dish? Зачем нужно было создать второй конструктор?
на 5:35 сложное объяснение вышло: Значения из Сигнатуры присваиваются ранее созданным полям класса - понять бы к чему эти определения привязаны. Можно ещё мышкой указть что есть что, и какая взаимосвязь, было бы понятнее, чуть чуть сложное объяснение
Спасибо ! Как новичку в начале кажется очень запутанным, могли ли бы Вы оставлять после каждого урока ссылки на рекомендуемый для прочтения материал по теме, (знаю что в google, их миллионы, поэтому было бы интересно видеть ресурсы рекомендуемые автором) еще раз спасибо ).
Здравствуйте! спасибо вам за фидбэк) Оставлять ссылки еще боюсь у меня не хватит ресурса пока что, поэтому не могу обещать) но возможно в рамках курса по андройд это будет актуально для некоторых тем, чтобы более углубленно разобраться в какой-то технологии. Касаемо котлин могу рекомендовать официальную документацию и ресурс с ее неофициальным переводом. Там довольно удобная навигация по разделам, ну и полезно читать официальные источники, так как версии языка меняются, где-то материал может быть устаревшим, неверно интерпретирован и так далее. Вот эти ресурсы: en kotlinlang.org/docs/getting-started.html ru kotlinlang.ru/ И конечно литература от создателей языка "Kotlin в действии"
Возможно где-то я не докрутил) Но тема сначала кажется действительно сложноватой, нужно, чтобы этот шаблон прижился в голове. Должна помочь доп литература и/или альтернативное объяснение
Здравствуйте. На этих таймкодах я демонстрирую один и тот же основной конструктор. Разный лишь синтаксис. class Dish, class Dish(), class Dish constructor() - это все классы, который имеют пустой основной конструктор (он указан именно в сигнатуре класса, рядом с названием) Вторичный конструктор - это когда мы [в теле класса] явно прописываем ключевое слово conctructor() {} со всеми нужными нам полями.
@@ievetrov спасибо большое вам, на 12 уроке только узнал что есть текстовая версия, до этого сам делал записи. сделайте на сайте донат, кто захочет, пришлёт сколько сможет вам в качестве благодарности.
В видео неправильно назван порядок выполнения первичного, вторичного конструкторов и блока init. Правильно так: 1. Первичный конструктор 2. init 3. Вторичный конструктор Это легко проверить, выполнив этот код: class Person(val name: String, var age: Int) { init { println("Initializing Person object") } constructor(name: String, age: Int, address: String) : this(name, age) { println("Secondary constructor called") } } fun main() { val person = Person("John", 30, "123 Main St.") } В консоль будет выведено: Initializing Person object Secondary constructor called Автор, проверяйте внимательно то, что говорите, особенно новичкам.
Вы не внимательно слушали, вот ваш же пример, только дополнен кодом, который отрабатывает именно в момент вызова: class Person( val name: String, var age: Int, val some1: Unit = println("первичный конструктор"), ) { init { println("блок init 1") } constructor( name: String, age: Int, address: String, some2: Unit = println("вторичный конструктор") ) : this(name, age) { println("тело вторичного конструктора") } init { println("блок init 2") } } fun main() { val person = Person("John", 30, "123 Main St.") } А вот вывод: вторичный конструктор первичный конструктор блок init 1 блок init 2 тело вторичного конструктора Прям как в видео на 10:42 Обратите внимание, все init'ы вызывается перед телом вторичного конструктора. Еще могу посоветовать статью: medium.com/keepsafe-engineering/an-in-depth-look-at-kotlins-initializers-a0420fcbf546
Ссылки и содержание:
🔹 Тесты и практика по этому уроку: t.me/KotlinBasicsBot?start=youtube
🔹 Текстовая версия урока: clck.ru/39VGHt
🛠 Код из всех уроков: t.me/ievetrov_dev
🛠 Личный телеграм канал про путь разработчика: t.me/ievetrov_dev
✅ Вопросы и ответы для Android собеседований: t.me/AndroidSprint_Interview
🔹 Бесплатный курс по Android: clck.ru/376Zab
🔹 VK: vk.com/ievetrov.development
00:00 Что такое конструктор в Kotlin
01:24 Блок 1: пустой конструктор
03:34 Блок 2: основной конструктор (primary constructor)
05:58 Блок 3: упрощенная форма основного конструктора
06:27 Блок 4: вторичный конструктор (secondary constructor)
09:32 Инициализатор
1
7:25 а почему в главный конструктор не прописали свойство по умолчанию isNeedToPrepare, как в случае класса Dish? Зачем нужно было создать второй конструктор?
для того, чтобы показать работу вторичного конструктора, который подразумевает принятие дополнительных параметров, которых нет в первичном
С самого начала создания класса Ingredient конструктор класса объявлен. Чтобы он был не объявлен явно круглые скобки нужно не писать.
Как вы пишете сразу в нескольких местах пример: 5:05 ?
Нашёл
cntrl + shift + alt
на 5:35 сложное объяснение вышло: Значения из Сигнатуры присваиваются ранее созданным полям класса - понять бы к чему эти определения привязаны. Можно ещё мышкой указть что есть что, и какая взаимосвязь, было бы понятнее, чуть чуть сложное объяснение
Ни фига не понял, но очень интересно!
:D
Спасибо ! Как новичку в начале кажется очень запутанным, могли ли бы Вы оставлять после каждого урока ссылки на рекомендуемый для прочтения материал по теме, (знаю что в google, их миллионы, поэтому было бы интересно видеть ресурсы рекомендуемые автором) еще раз спасибо ).
Здравствуйте! спасибо вам за фидбэк)
Оставлять ссылки еще боюсь у меня не хватит ресурса пока что, поэтому не могу обещать) но возможно в рамках курса по андройд это будет актуально для некоторых тем, чтобы более углубленно разобраться в какой-то технологии.
Касаемо котлин могу рекомендовать официальную документацию и ресурс с ее неофициальным переводом. Там довольно удобная навигация по разделам, ну и полезно читать официальные источники, так как версии языка меняются, где-то материал может быть устаревшим, неверно интерпретирован и так далее.
Вот эти ресурсы:
en kotlinlang.org/docs/getting-started.html
ru kotlinlang.ru/
И конечно литература от создателей языка "Kotlin в действии"
@@ievetrov спасибо !
Огонь, хорошие примеры
Блин, два раза пересмотрел, понял только начало)
Возможно где-то я не докрутил) Но тема сначала кажется действительно сложноватой, нужно, чтобы этот шаблон прижился в голове. Должна помочь доп литература и/или альтернативное объяснение
Два, мало, нужно ещё и почитать... А так это одно из лучших объяснений на русском языке!
Понравилась реализация ООП в котлин, спасибо за объяснение. пересмотрев видео, сразу всё понял
Вам спасибо, кайф, что заходит подача)
совсем редко стали уроки выходить =(
🥺
на 2.25 и на 3.37 оба вида конструктора называете primary. Так какой из них какой ?
Здравствуйте. На этих таймкодах я демонстрирую один и тот же основной конструктор. Разный лишь синтаксис. class Dish, class Dish(), class Dish constructor() - это все классы, который имеют пустой основной конструктор (он указан именно в сигнатуре класса, рядом с названием)
Вторичный конструктор - это когда мы [в теле класса] явно прописываем ключевое слово conctructor() {} со всеми нужными нам полями.
Хороший урок, можно на примере разобрать порядок выполнения кода со вторичным конструктором?
Посмотрите, пожалуйста, на ветку комментариев ниже. Мы там обсуждали как раз порядок вызовов и привели пример кода
Эх жаль что нет текстовых уроков 😢
Здравствуйте. Текстовые версии у меня на сайте вот по этой ссылке ievetrov.ru/kotlin-%d1%81-%d0%bd%d1%83%d0%bb%d1%8f-%d1%83%d1%80%d0%be%d0%ba%d0%b8/
@@ievetrov спасибо большое вам, на 12 уроке только узнал что есть текстовая версия, до этого сам делал записи. сделайте на сайте донат, кто захочет, пришлёт сколько сможет вам в качестве благодарности.
Как кастомизировать полосу компиляции как у вас с котиком?
В разделе плагины скачайте nyan cat)
В видео неправильно назван порядок выполнения первичного, вторичного конструкторов и блока init.
Правильно так:
1. Первичный конструктор
2. init
3. Вторичный конструктор
Это легко проверить, выполнив этот код:
class Person(val name: String, var age: Int) {
init {
println("Initializing Person object")
}
constructor(name: String, age: Int, address: String) : this(name, age) {
println("Secondary constructor called")
}
}
fun main() {
val person = Person("John", 30, "123 Main St.")
}
В консоль будет выведено:
Initializing Person object
Secondary constructor called
Автор, проверяйте внимательно то, что говорите, особенно новичкам.
Вы не внимательно слушали, вот ваш же пример, только дополнен кодом, который отрабатывает именно в момент вызова:
class Person(
val name: String,
var age: Int,
val some1: Unit = println("первичный конструктор"),
) {
init {
println("блок init 1")
}
constructor(
name: String,
age: Int,
address: String,
some2: Unit = println("вторичный конструктор")
) : this(name, age) {
println("тело вторичного конструктора")
}
init {
println("блок init 2")
}
}
fun main() {
val person = Person("John", 30, "123 Main St.")
}
А вот вывод:
вторичный конструктор
первичный конструктор
блок init 1
блок init 2
тело вторичного конструктора
Прям как в видео на 10:42
Обратите внимание, все init'ы вызывается перед телом вторичного конструктора. Еще могу посоветовать статью:
medium.com/keepsafe-engineering/an-in-depth-look-at-kotlins-initializers-a0420fcbf546
@@ievetrov сдаюсь. Действительно довольно путанная тема. Спасибо за статью.