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

Поділитися
Вставка
  • Опубліковано 30 вер 2024
  • Раннее и Позднее связывание характеризует то, как действуйт программа при вызове функций на объекте подкласса через указатель на суперкласс.
    Эти понятия также часто называются статической и динамической типизацией.

КОМЕНТАРІ • 70

  • @roman-romadin
    @roman-romadin 6 років тому +53

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

    • @grommaks
      @grommaks 4 роки тому +4

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

  • @me_000_xXx
    @me_000_xXx 4 роки тому +9

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

  • @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 да, такие видео только больше каши в голове создадут.

  • @mgevlich
    @mgevlich 9 років тому +8

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

  • @mrakobes228
    @mrakobes228 5 місяців тому

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

  • @AlexeyNeklesa
    @AlexeyNeklesa 9 років тому +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 5 місяців тому

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

  • @Дмитрий_Ник
    @Дмитрий_Ник 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

  • @ataganatagan2397
    @ataganatagan2397 6 років тому +3

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

  • @Qnoize
    @Qnoize 4 роки тому +2

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

    • @avazart614
      @avazart614 4 роки тому

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

  • @artemsliusar1282
    @artemsliusar1282 7 років тому +3

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

    • @dentor2005
      @dentor2005 4 роки тому

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

  • @the2x548
    @the2x548 4 роки тому +2

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

    • @june3878
      @june3878 3 роки тому

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

  • @kipa3006
    @kipa3006 8 років тому +2

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

    • @yanslow9083
      @yanslow9083 Рік тому +2

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

  • @user-mcm
    @user-mcm 3 роки тому +1

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

  • @Mark_Sher_
    @Mark_Sher_ 7 років тому +2

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

    • @kgaussss7299
      @kgaussss7299 4 роки тому

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

  • @JIockjoy
    @JIockjoy 2 роки тому

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

  • @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 вообще очень часто бывает, что одни и те-же слова используются поразному в зависимости от контекста. И плюс тут ещё вопрос английского и русского языков.
      Когда начал читать ваш первый комментарий, подумал, что может вы говорили про ленивую инициализацию, которую также называют поздней иногда. Это опять-же совершенно другое понятие, никак не связаное с тем, о чём я говорил в этом конкретном видео.

  • @hatami74
    @hatami74 10 місяців тому

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

  • @undersun6301
    @undersun6301 6 місяців тому

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

  • @victorzedwings
    @victorzedwings 6 років тому

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

  • @ПётрФомин-я3ж
    @ПётрФомин-я3ж 9 років тому

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

  • @aleksandrkravtsov8727
    @aleksandrkravtsov8727 5 років тому

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

  • @вахидразбамбеков
    @вахидразбамбеков 2 роки тому

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

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

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

  • @alexmur07
    @alexmur07 6 років тому

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

  • @kirillnorkin8283
    @kirillnorkin8283 4 роки тому

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

  • @bennails3447
    @bennails3447 4 роки тому

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

  • @VictorThD
    @VictorThD 6 років тому

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

  • @Federation1323
    @Federation1323 3 роки тому

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

  • @MrRomanvideo
    @MrRomanvideo 4 роки тому

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

  • @ilya9852
    @ilya9852 Рік тому

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

  • @ninjacheese2168
    @ninjacheese2168 4 роки тому

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

  • @eb6006
    @eb6006 Рік тому

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

  • @me2beats313
    @me2beats313 4 роки тому

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

  • @ironmelon_nurbirion
    @ironmelon_nurbirion 3 роки тому

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

  • @gagogoga794
    @gagogoga794 4 роки тому

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

  • @keyrea1
    @keyrea1 7 років тому

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

  • @ВсеволодЗорин-л6н
    @ВсеволодЗорин-л6н 6 років тому

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

  • @yauhenizakhno8510
    @yauhenizakhno8510 5 років тому

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

  • @АлексИванов-ы9ч
    @АлексИванов-ы9ч 2 роки тому

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

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

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

  • @antonbeton5738
    @antonbeton5738 7 років тому

    Крутое видео

  • @arcsin4083
    @arcsin4083 5 років тому

    Спасибо!

  • @AndreyDelay
    @AndreyDelay 4 роки тому

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

    • @VladimirMozhenkov
      @VladimirMozhenkov  4 роки тому

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

  • @mailmeeeee
    @mailmeeeee 7 років тому

    Посмотри на оформление своих видео в листинге и скажи: о чем оно? Посмотри на описание своего видео? и скажи: о чем видео то? Я только из комментов понял, что речь про Java...

    • @maxlich9139
      @maxlich9139 7 років тому +1

      какая джава?! он использует язык с++

    • @mailmeeeee
      @mailmeeeee 7 років тому

      вот и я про то же)) даже из комментов нихера не понятно о чем речь идет=)) гений маркетинга) код документирует наверное так же))

    • @maxlich9139
      @maxlich9139 7 років тому

      Да, это минус, что он не указывает язык. Я давно изучал си++ и уже не сильно хорошо помню его синтаксис, поэтому смотрю на год, и гадаю, какой это язык (а сейчас там много си-подобных языков)

    • @sammeroff
      @sammeroff 6 років тому +3

      Причем здесь язык? Это понятия из ООП, которые относятся к любому ООП языку.