Раннее и Позднее Связывание

Поделиться
HTML-код
  • Опубликовано: 17 окт 2024

Комментарии • 70

  • @roman-romadin
    @roman-romadin 6 лет назад +53

    Спасибо! Лучший стиль преподавания! Если бы так в универах преподавали ...

    • @grommaks
      @grommaks 4 года назад +4

      В почти универе так) как я понял из вступления)

  • @hatami74
    @hatami74 11 месяцев назад

    Самое лучшее объяснение, которое встречал

  • @me_000_xXx
    @me_000_xXx 4 года назад +9

    Спасибо 🖐️Искал аналогию virtual-метода в java, и, как оказалось, в java все методы виртуальные и нет надобности в отдельном кейворде аля virtual. И Володя это же рассказал. Прикольно)

  • @undersun6301
    @undersun6301 6 месяцев назад

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

  • @user-mcm
    @user-mcm 3 года назад +1

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

  • @mgevlich
    @mgevlich 9 лет назад +8

    Отлично рассказываете. Единственное хотел увидеть больше примеров, не только с виртуальными функциями, но и динамически создаваемыми объектами и указателями.

  • @kirillnorkin8283
    @kirillnorkin8283 4 года назад

    Володя, ты выносишь мне мозг, благодарю)))

  • @AlexeyNeklesa
    @AlexeyNeklesa 9 лет назад +6

    Молодец. Однозначно подписываюсь.
    Очень понравилось.

  • @ДмитрийБузницкий-б3н

    Спасибо, Володя. Хорошо объяснил. :)

  • @eb6006
    @eb6006 Год назад

    Круто! Все встало на свои места!

  • @вахидразбамбеков
    @вахидразбамбеков 2 года назад

    мужик красава! я тугодум даже понял!

  • @artemsliusar1282
    @artemsliusar1282 7 лет назад +3

    Здравствуйте.
    Подскажите, пожалуйста, Вы говорите, что динамическая типизация = позднее связывание. Но ведь Java - это язык со статической типизацией и поздним связыванием (в большинстве случаев).
    Т.е. как-то неодназначно.

    • @dentor2005
      @dentor2005 4 года назад

      javarush.ru/groups/posts/439-razlichija-mezhdu-rannim-i-pozdnim-svjazihvaniem-v-java

  • @bennails3447
    @bennails3447 4 года назад

    Правильный Володя. Лайк и подписка👍

  • @ironmelon_nurbirion
    @ironmelon_nurbirion 3 года назад

    Спасибо огромное!!!

  • @turalbadalov480
    @turalbadalov480 6 лет назад +5

    Автор, правы ли вы называя ранее связывание статической типизацией? Думаю нет. Вот если бы назвали статическим связыванием , то считаю было бы верно. Ведь статическая типизация это совсем иное, и кстати, Java статически типизированный язык (с динамическим связыванием, хотя статическое связывание в java тоже есть). Статическая типизация это когда мы в момент объявления знаем тип объекта, например String str; А есть языки в которых этот тип не пишется, это языки с динамической типизацией. Вывод: то о чем вы говорите называется статическое и динамическое связывание и в java все таки есть и статическое связывание тоже. Казалось бы ну откуда в Java раннее связывание? А как же статические методы? вот пример, javarush.ru/groups/posts/439-razlichija-mezhdu-rannim-i-pozdnim-svjazihvaniem-v-java где показывается существование статического связывания и кстати JVM помечает такие методы и с помощью спец команд можно увидеть эти пометки в консоли.

    • @casusbelli9326
      @casusbelli9326 6 лет назад

      В видео перепутаны такие понятия, как типизация (typing) и диспетчеризация (dispatch).

    • @tebesvet
      @tebesvet 2 месяца назад

      @@casusbelli9326 да, такие видео только больше каши в голове создадут.

  • @keyrea1
    @keyrea1 7 лет назад

    Каеф) Супер доступно, даже для того, как я) Спасибо)

  • @kipa3006
    @kipa3006 8 лет назад +2

    Не могли бы вы привести пример в котором использовалось бы раннее связывание? Где может быть применим такой способ связывания? Как вы уже говорили, во многих языках такой возможности нет вовсе - бывают ли ситуации, в которых есть острая потребность в раннем связывании, или такая возможность представляет скорее академический интерес?

    • @yanslow9083
      @yanslow9083 Год назад +2

      Java static, final, overload, все - раннее связывание

  • @ВсеволодЗорин-л6н
    @ВсеволодЗорин-л6н 6 лет назад

    спасибо Вам. Уяснил разницу.

  • @АлексИванов-ы9ч
    @АлексИванов-ы9ч 2 года назад

    Человечище!)

  • @alexmur07
    @alexmur07 6 лет назад

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

  • @splashattacks9714
    @splashattacks9714 8 лет назад +9

    А как же в Java статические и приватные методы, они же не являются виртуальными,так получается не все связывание в Java позднее?

    • @maxlich9139
      @maxlich9139 7 лет назад +4

      Да, судя по информации в интернете (в идеи надо в документацию к Джаве лезть), приватные методы, статические методы, методы, помеченные модификатором final, и конструкторы используют раннее связывание.

    • @june3878
      @june3878 3 года назад

      @@maxlich9139 у java есть документация? 😳

    • @maxlich9139
      @maxlich9139 3 года назад

      @@june3878 а куда она делась? О_о

    • @june3878
      @june3878 3 года назад

      @@maxlich9139 это нельзя назвать документацией)

    • @alexpavlov9097
      @alexpavlov9097 6 месяцев назад

      а что можно назвать документацией?

  • @victorzedwings
    @victorzedwings 6 лет назад

    *когда во время исполнения??? во время вызова или во время загрузки??? или во время создания экземпляра класса???*

  • @ilya9852
    @ilya9852 Год назад

    Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).

    • @aojona
      @aojona Год назад

      и static

  • @Qnoize
    @Qnoize 4 года назад +2

    в Java 2 типа связывания: раннее, если методы static, private или final. В остальных позднее

    • @avazart614
      @avazart614 4 года назад

      @Боня Ферзь Но не логично для С++ так как там virtual может быть private.

  • @ДмитрийМаксаров-э9ф

    я подписался с удовольствием!

  • @gagogoga794
    @gagogoga794 4 года назад

    Бог компуктеров!!!

  • @MrRomanvideo
    @MrRomanvideo 5 лет назад

    Это тоже самое что компайл и рантайм полиморфизм?

  • @ПётрФомин-я3ж
    @ПётрФомин-я3ж 9 лет назад

    в rust есть zero cost abstraction благодаря которому не происходит поиска метода во время исполнения проги

  • @AndreyDelay
    @AndreyDelay 4 года назад

    круто) такого наставника бы в работе

    • @VladimirMozhenkov
      @VladimirMozhenkov  4 года назад

      Я занимаюсь репетиторством через интернет... если что.

  • @Anton-ws8jn
    @Anton-ws8jn 9 лет назад +1

    Помоему это больше к полиморфизму относится, а не к связыванию. К примеру в .NET к позднему связыванию относится загрузка сборок во время выполнения программы и инстанциирование типов находящихся в них с последующим использованием их функционала. Поправьте если я не прав.

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад

      Антон Самошин Дело в том, что я .NET не знаю, так что не совсем понимаю о чём идёт речь. Можете объяснить что такое "сборки".

    • @Anton-ws8jn
      @Anton-ws8jn 9 лет назад

      Vladimir Mozhenkov сборка в данном варианте просто обычная dll которая подгружается во время работы программы. К примеру у нас есть некий графический редактор, а в отдельной dll лежит какой нибудь плагин к нему и на этапе работы программы пользователь подгружает эту dll и задействует ее функционал (вызываются методы/функции классов из этой dll) тем самым осуществляется позднее связывание

    • @VladimirMozhenkov
      @VladimirMozhenkov  9 лет назад +1

      Антон Самошин Ясно вы про компиляцию и использование библиотек. Это не только в .NET - это везде так, но я никогда не слышал чтобы это называли ранним и поздним связыванием. Термины, которые мне всегда встречались - это статическое и динамическое связывание.
      В IT вообще очень часто бывает, что одни и те-же слова используются поразному в зависимости от контекста. И плюс тут ещё вопрос английского и русского языков.
      Когда начал читать ваш первый комментарий, подумал, что может вы говорили про ленивую инициализацию, которую также называют поздней иногда. Это опять-же совершенно другое понятие, никак не связаное с тем, о чём я говорил в этом конкретном видео.

  • @arcsin4083
    @arcsin4083 5 лет назад

    Спасибо!

  • @Federation1323
    @Federation1323 3 года назад

    Объяснения: уровень Бог

  • @VictorThD
    @VictorThD 6 лет назад

    А в языке С тоже есть динамическая типизация?

  • @ataganatagan2397
    @ataganatagan2397 6 лет назад +3

    В java есть статическое/раннее связывание

  • @antonbeton5738
    @antonbeton5738 7 лет назад

    Крутое видео

  • @aleksandrkravtsov8727
    @aleksandrkravtsov8727 5 лет назад

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

  • @the2x548
    @the2x548 4 года назад +2

    Я не понимаю, как foo(A a) вызывает a->get()

    • @june3878
      @june3878 3 года назад

      Например так:
      foo(A a)
      {
      a.get();
      }

  • @Mark_Sher_
    @Mark_Sher_ 7 лет назад +2

    Было бы неплохо если бы Вы нумеровали видео, тогда было бы понятно в какой последовательности смотреть.

    • @kgaussss7299
      @kgaussss7299 4 года назад

      Ох как же этого не хватает!

  • @me2beats313
    @me2beats313 4 года назад

    видимо нужно для скорости

  • @ninjacheese2168
    @ninjacheese2168 4 года назад

    Поздняя типизация. ОК.

  • @Дмитрий_Ник
    @Дмитрий_Ник 4 года назад +1

    public class Test {
    public static void main(String[] args) {
    A a = new B();
    int get = a.get();
    String foo = a.foo();
    System.out.println("get: " + get);
    System.out.println("foo: " + foo);
    }
    }
    class A {
    public int get() {
    return 100;
    }
    public static String foo() {
    return "foo1";
    }
    }
    class B extends A {
    public int get() {
    return 200;
    }
    public static String foo() {
    return "foo2";
    }
    }
    get: 200
    foo: foo1

    • @Qnoize
      @Qnoize 4 года назад

      все верно в Java раннее связывание будет если метод static, final, private

  • @yauhenizakhno8510
    @yauhenizakhno8510 5 лет назад

    Немного понял, но не совсем

  • @mrakobes228
    @mrakobes228 6 месяцев назад

    Метод потомка вызовется, если метод переопределён, если метод не переопределён или перегружен, или имеет модификаторы (private,static,final) вызовется метод родителя родителя!!!!!!!!!!! ЧЁ орать то!!!ГЫЫЫ!!!

  • @JIockjoy
    @JIockjoy 2 года назад

    Да, уж и зачем я связался.