Java SE. Урок 21. Наследование. Использование this и super

  Рет қаралды 45,264

Follow the white rabbit

Follow the white rabbit

Күн бұрын

В данном видео речь идет о еще одном принципе ООП - это наследование.
Наследование - это отношения между классами, при котором характеристики одного класса (суперкласса) передаются другому классу (наследнику) без необходимости их повторного определения.
Наследник в свою очередь может расширять возможности суперкласса путем добавления своих: полей, методов, конструкторов и логических блоков.
При этом для работы с атрибутами суперкласса используется ключевое слово super, а для работы с атрибутами данного класса (наследника) - ключевое слово this.
Множественное наследование в java запрещено, однако разрешено множественное наследование интерфейсов, что дает почти те же возможности, что и при наследовании.

Пікірлер: 72
@woodscrock
@woodscrock 4 жыл бұрын
Очень тонко про this и super! This is super!
@serjioletti
@serjioletti Жыл бұрын
Спасибо за инфу! Было интересно и полезно!!!) Сейчас как раз прохожу задачи по этой теме .
@tokepala5227
@tokepala5227 5 жыл бұрын
спасибо очень полезно, всего тебе доброго и самого хорошего Чуев Александр !!!
@followthewhiterabbit6924
@followthewhiterabbit6924 5 жыл бұрын
Тонкий юмор?)) или мне просто показалось?)
@tkr4961
@tkr4961 2 жыл бұрын
@@followthewhiterabbit6924 нет,уверен,что это искренне.Я присоединяюсь к этому комментарию))спасибо
@AgadadievOka
@AgadadievOka 2 жыл бұрын
Спасибо. Очень понятно объяснил, респект!
@nickpetrushkin6139
@nickpetrushkin6139 3 жыл бұрын
Спасибо, запутало слово "super", хорошо объяснил 👍👍
@antonmakhatilov8008
@antonmakhatilov8008 5 жыл бұрын
охренеть как понятно сразу стало)) спасибо большое)
@greenkingshop1033
@greenkingshop1033 2 жыл бұрын
очень понятно и очень круто, спасибо!
@vladislavnesterov8561
@vladislavnesterov8561 Жыл бұрын
Спасибо, все шикарно объяснено
@turgayalekberli9554
@turgayalekberli9554 5 жыл бұрын
Хороший урок, спасибо
@jamesjameson5530
@jamesjameson5530 2 жыл бұрын
I know I am kinda randomly asking but does anybody know a good website to watch new tv shows online ?
@luciankendrick6642
@luciankendrick6642 2 жыл бұрын
@James Jameson Flixportal :)
@jamesjameson5530
@jamesjameson5530 2 жыл бұрын
@Lucian Kendrick Thank you, I signed up and it seems to work :D I appreciate it!
@luciankendrick6642
@luciankendrick6642 2 жыл бұрын
@James Jameson Happy to help xD
@djadjaandrey
@djadjaandrey 11 ай бұрын
Thanks a million!!!👍👍👍
@Voronovsky
@Voronovsky 2 жыл бұрын
Спасибо!
@dicur3x
@dicur3x 3 жыл бұрын
Страусы не прячут голову в песок, а прижимают ее к земле )
@arturarslanov6229
@arturarslanov6229 3 жыл бұрын
Крутые уроки ! Рекомендую смотреть на скорости 1.5
@mschief4867
@mschief4867 4 жыл бұрын
на 10:21, при обращении к одному полю супер класса из двух подклассов (crow и Ostrich) мы обращаемся к разным экземплярам bird ?
@javacoderfromchengdu2734
@javacoderfromchengdu2734 6 жыл бұрын
thenks
@bednieporosyatki
@bednieporosyatki 4 жыл бұрын
В переменные Птицы помещено поле крылья (экз другого класса) после создания конструктора нужно что то вводить а для этого надо создать экземпляр с названием чтобы убрать ошибку инициализации вызванную конструктором , который дописали позже. Сначала тупил и не мог понять что вписывать то?! потом создал объект и вписал имя(дескриптер) в конструктор. Потом еще ступил и начал думать а зачем переменную то внесли в качестве поле у птиц?! и что с ней там делать?! Но понял что это крутая штука т.к. оперение может быть разным, форма крыльев размер б цвет и все это характеристики которые будут лежать в классе крылья и при необходимости мы сможем их проинициализировать и запросить их при выводе сводной таблицы по конкретной птице! Очень интересно. Спасибо еще в копилку пару песчинок понимания.
@romabulava899
@romabulava899 3 жыл бұрын
но надо было бы создать еще страуса с параметрами суперкласса и локальными какими нибудь, и показать что вот не увеличивая код создаем страуса используя общие и локальные поля
@dianaofitserova4427
@dianaofitserova4427 Жыл бұрын
Супер
@altayski3704
@altayski3704 2 жыл бұрын
Красава конечно, но немного получилось кручу-верчу. Спасибо!
@americanpie959
@americanpie959 4 жыл бұрын
Крутяк
@eugenetaranoff1122
@eugenetaranoff1122 7 жыл бұрын
ок , а что мы можем передать в качестве параметров в конструктор Бердс, например при создании объекта ostrich - первый параметр стринга это понятно, а второй Wings wings, очевидно объект wings? Как это следует записать, можете подсказать?
@followthewhiterabbit6924
@followthewhiterabbit6924 7 жыл бұрын
Все верно. Надо создать объект Wings wings = new Wings; Далее объекту wings просетать поля. (не помню есть ли в моем примере эти поля, но в целом они будут) И потом передать в конструктор. Либо просетать. Вот так: Wings v= new Wings; wings.setColor("red"); // к примеру String birdName= "Voron"; Birds birds = new Berds(birdName, wings);
@eugenetaranoff1122
@eugenetaranoff1122 7 жыл бұрын
спасибо!
@rimus999
@rimus999 4 жыл бұрын
@@followthewhiterabbit6924 Большое спасибо.
@podpalmoi
@podpalmoi 3 жыл бұрын
В текущей версии идеи прога ругается, если оставить аргументы (что в скобках) пустыми. Мне пришлось заменить вместо класса Wings на класс String, чтобы не было ошибок))
@vole4
@vole4 2 жыл бұрын
не совсем понятно, зачем создан отдельный класс "Крылья", почему он через стринг указан в классе "Птицы" и почему класс "Страус" extends только класс "Птицы", если он также extends класс "Крылья" (про невозможность множественного наследования поняла, но всё равно странно про крылья)
@lmmunne
@lmmunne Жыл бұрын
наследоваться можно только от одного класса, но например можно наследоваться от нескольких интерфейсов
@zolotoesolnse6348
@zolotoesolnse6348 10 ай бұрын
Да ,множественное наследование только от интерфейса
@podpalmoi
@podpalmoi 3 жыл бұрын
У меня в классе Main подчёркиваются скобки в коде: Ostrich ostrich = new Ostrich(); Crow crow = new Crow(); В чём причина? Код почти идентичен коду автора, только мэйн класс в том же пакете. ps Видимо надо как-то заполнить скобки, но что писать под wings Wings я не понял. Заменил для крыльев на класс String - и вот только так без ошибок.
@VitaliyCislyak
@VitaliyCislyak 2 жыл бұрын
(Если ещё актуально) Автор не дописал правильную инициализацию для объектов страуса и вороны. Я для этого отдельно создал крылья страуса и вороны, после чего присвоил их созданным страусу и вороне: Wings ostrichWings = new Wings(); Wings crowWings = new Wings(); Ostrich ostrich1 = new Ostrich("Ostrich1's Name", ostrichWings); Crow crow1 = new Crow("Crow1's Name", crowWings); System.out.println(ostrich1.getName()+" с крыльями "+ostrich1.getWings()); System.out.println(crow1.getName()+" с крыльями "+crow1.getWings());
@user-ji4uc2ce1s
@user-ji4uc2ce1s Жыл бұрын
Я повторно у дочерних классов ключевое слово extends удалял и заново писал и почему то ошибка пропадала
@user-iv1bj9vf1i
@user-iv1bj9vf1i 2 жыл бұрын
Спасибо, оч крутой курс. Только там одна ошибка есть. В "public class Birds" Вместо "private Wings wings;" надо написать "private String wings;"
@mrian_2910
@mrian_2910 2 жыл бұрын
Зачем, если wings это объект класса Wings, его специально создали для описания крыльев.
@chpokerchpoker9407
@chpokerchpoker9407 Жыл бұрын
ну ты и тупой : D
@zorigtojerebtsov1126
@zorigtojerebtsov1126 2 жыл бұрын
здравствуйте, вопрос, класс наследник может свои методы создавать кроме методов родителя?
@followthewhiterabbit6924
@followthewhiterabbit6924 2 жыл бұрын
Здравствуйте, да, конечно!
@nmodonov
@nmodonov 3 жыл бұрын
fly() наверное стоит оставить в Birds. А у страуса либо переопределить метод fly, чтобы возвращал "не могу летать", либо завести в Birds отдельное поле canFly, строковое или буленово, по значению которого fly() будет сообщать, может конкретная птица летать или нет. А так в целом очень понятные видосы, коротко и по сути. По конструкторам думал, что как и с остальными методами. Если явно не переопределяем, то переносится от родителя какое есть. По наследованию пока не очень догоняю конструкции типа Bird bird = new Ostrich() Зачем это? Создаешь страуса, так и делай страуса. Зачем создавать птицу и потом делать ее страусом? Чтобы дальше по ходу кода переобуться и сделать его вороной? Тем более в таких конструкциях не особо понятно, какие поля и методы будут у bird и как с ними работать.
@andriybondarenko6282
@andriybondarenko6282 7 жыл бұрын
Извините, то есть выходит, что при наследовании, обращение к полю дочернего класса в его методе при помощи ключевого слова super фактически эквивалентно использованию this, хотя и означает, грубо говоря, обращение к "родительской части" класса наследника?
@followthewhiterabbit6924
@followthewhiterabbit6924 7 жыл бұрын
Все верно )
@user-qy7yv1ut4c
@user-qy7yv1ut4c 7 жыл бұрын
не понимаю зачем сделали так, что в дочернем плене необходимо конструктор повторят.
@followthewhiterabbit6924
@followthewhiterabbit6924 7 жыл бұрын
В этом нет необходимости, просто иногда в суперклассе происходит какая-та инициализация полей, которые в дальнейшем могут где-то использоваться. Как в случае с Exceptions. По иерархии выше, вы можете передать какое-то сообщение на самую верхушку иерархии, а потом оно будет где-то использоваться - к примеру при выводе stack trace ошибки.
@dontknowwhattotypelo
@dontknowwhattotypelo 6 жыл бұрын
Извините, не могу понять смысл "super". Разве мы не можем обратиться к полям и методам класса Birds посредством прямого обращения: Birds. ..... ?
@DotaAllstars4
@DotaAllstars4 3 жыл бұрын
дело в том что переменная в супер-классе может быть private
@mikhaillazarev5378
@mikhaillazarev5378 2 жыл бұрын
@@DotaAllstars4Тогда обращаться через геттер и сеттер, разве нет?
@user-wr7wk3fg4v
@user-wr7wk3fg4v 2 жыл бұрын
Все верно, можем напрямую, автор как-то не оттуда зашёл, но все равно молодец. Super используется (в варианте на видео) только если испльзуется конструктор класса и если у суперкласса и подкласса одинаковое название переменных и методов, в таком случае, если обращаться к переменной или методу с одинановым названием в подклассе - приоритет отдается подклассу, а переменные и метод в суперклассе не вызываются, ну а если указать Super (точкая) и название переменной или метода с одинаковим названием тогда это будут метод или переменная из суперкласса . Вообще все подклассы наследуют всех членов своих суперклассов, без модификатором доступа Private к переменным в суперклассе это было б наглядней понятно
@covers4505
@covers4505 5 ай бұрын
объясните пожалуйста, зачем нужно конструктор?
@user-ib2lq9td5h
@user-ib2lq9td5h 4 жыл бұрын
Так и не-понял зачем этот this если все одинаково. Таким макаром можно его неиспользовать какая разница от куда будут идти значения.
@hexruin4569
@hexruin4569 4 жыл бұрын
Поля(они же переменные) конструктора или метода - локальные, то есть они видны только в пределах этого конструктора/метода. Когда у класса и у конструктора/метода совпадают названия полей, то одинаковое в них только название, а по факту это две разных переменных. Но из-за того что у них одинаковые имена, как обратиться к переменной класса name изнутри метода, в котором есть своя локальная переменная name? Через this!
@pavelvoitishin3487
@pavelvoitishin3487 3 жыл бұрын
Вы занимаетесь преподавательской деятельностью?
@podpalmoi
@podpalmoi 3 жыл бұрын
На сайте в описании указано, чем он занимается.
@td1424
@td1424 Жыл бұрын
зачем класс wings ?
@NarkotikAsd
@NarkotikAsd 3 жыл бұрын
шрифт маленький ниче не видно
@nuki7944
@nuki7944 5 жыл бұрын
начало немножко затянутое
@yarik83men51
@yarik83men51 5 жыл бұрын
+++
@user-bn9wc8db6s
@user-bn9wc8db6s 2 жыл бұрын
Выскажу своё мнение: второй месяц изучаю Java, дошёл до темы наследование, по данному видео курсу практически ничего полезного приобрести нельзя, приведены ужасные примеры для понимания....
@augustolasker3462
@augustolasker3462 2 жыл бұрын
чё так мелко?
@olzhas654
@olzhas654 3 жыл бұрын
Я ничего не понял, потому что я отвлекается и не слушал
@koneri85
@koneri85 2 жыл бұрын
по мне так странные примеры, плохо отражающие суть наследования. И да - I AM Ostrich and i AM scared. Английский вроде как нужен в программировании. Надо его знать
@floatmasta
@floatmasta 2 жыл бұрын
Искал этот комментарий :D Так и знал, что какой-нибудь умник не устоит и напишет свое важное замечание. Как будто это урок английского языка, а не программирования.
@AkzholSlamzhanov
@AkzholSlamzhanov 3 жыл бұрын
нихера не понятно
@podpalmoi
@podpalmoi 3 жыл бұрын
А ты думал, посмотришь видео и уже знаток? Это не коровам хвосты крутить. Я тоже дня 3 1 только этот урок усваивал. Значит мозг ещё живой, работает. И это не плохо, что не понимаешь, это просто данность, или следствие миропознания :)
@lmmunne
@lmmunne Жыл бұрын
колибри ходить не умеет
@tomskiy1700
@tomskiy1700 4 жыл бұрын
да блин, используете английские слова, отрепетируйте их произношение, ну серьезно. одна из основных проблем большинства обучающих программированию на ютубе.
@followthewhiterabbit6924
@followthewhiterabbit6924 4 жыл бұрын
Согласен!)
@fortunido
@fortunido 6 жыл бұрын
Все уроки были просто супер. А этот какая то чушь. Только запутался с этим уроком. Пришлось в других местах разбираться. Народ не советую его запускать. Лучше другие найдите по данной теме.
Who has won ?? 😀 #shortvideo #lizzyisaeva
00:24
Lizzy Isaeva
Рет қаралды 65 МЛН
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 34 МЛН
Самый Молодой Актёр Без Оскара 😂
00:13
Глеб Рандалайнен
Рет қаралды 11 МЛН
Super Keyword in Java Full Tutorial - How to Use "super"
11:33
Coding with John
Рет қаралды 198 М.
Java SE. Урок 26. Класс String и его методы
19:56
Follow the white rabbit
Рет қаралды 73 М.
Дженерики в Java. Проще чем кажется.
21:36
Игорь Мешалкин
Рет қаралды 15 М.
Java SE. Урок 23. Абстрактные классы и методы
6:47
Follow the white rabbit
Рет қаралды 26 М.
Принципы ООП. 2. Наследование
10:31
Sergey Nemchinskiy
Рет қаралды 99 М.
Java Lessons. OOP. Inheritance
15:56
Айтигенио: международная онлайн-школа
Рет қаралды 3,2 М.
Who has won ?? 😀 #shortvideo #lizzyisaeva
00:24
Lizzy Isaeva
Рет қаралды 65 МЛН