TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #807 995
В Java реализована динамическая диспетчеризация, которая "сама" решает непосредственно во время выполнения программы, какую реализацию метода запускать. Узнать это с помощью статической типизации невозможно.

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

Своим названием однако эта концепция только запутывает. Просто знайте, что тайп-класс имеет очень мало общего с "типом" или "классом".

Если интерфейс в языках ООП говорит "этот класс может выполнить этот метод", то тайп-класс говорит, что "существует нечто, что может выполнить этот метод на этом классе" (где понятие класса совсем абстрактно). Интерфейс обычно "прошивается" в коде в заголовке класса, а экземпляр тайп-класса существует как отдельная "физическая" сущность -- реализация метода не привязывается к "классу рантайма". Компилятор вытаскивает нужный экземпляр тайп-класса, основываясь на эксплицитном типе в исходном коде, а не на конкретном типе во время выполнения. Этот подход конечно не так гибок, как динамическая диспетчеризация в ООП, но имеет то безусловное преимущество, что просто посмотрев на код, мы можем точно сказать, какая реализация метода будет выполнена.

Да, но как тогда мы можем рассуждать о коде в Java на третьем логическом уровне, если не знаем точно, какой код будет выполняться? На помощь приходит принцип подстановки Лисков (точнее, его идеология). Подробнее эту тему разбираю для курсантов в материале "LSP с т.зр. ФП".

Вкратце, абстракция LSP гласит: разработчик! не удивляй своих коллег! )))
  • 👍 8
  • 😁 2
  • ❤ 1
  • ✍ 1
More from @lambda_brain
  1. Oct 15, 2026И вот куда же в этом десятилетии придёт айтишка с эйайкой?? Ладно, спалю базу. Вот о чём т…
  2. Oct 15, 2026Уничтожаем всю мировую AI-индустрию и бизнес на цодах-шмодах одним сетапом. Старенький сис…
  3. Oct 15, 2026Вот идеальный формат собеседования в айтишке: в течение часа наблюдайте за тем, как кто-то…
  4. Oct 15, 2026Каждый месяц мой рабочий процесс разработки с использованием AI полностью заменяется совсе…
  5. Oct 14, 2026Этот отчёт ментата заслуживает быть приведённым полностью => Итоги. Часов 8 "одним подходо…
  6. Oct 14, 2026Прекрасное: вся музыкальная индустрия перешла на цифру и стриминг, но музыкальная экономик…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →