16 подписчиков
Хочу поделиться с вами «открытием», которое меня посетило – объекты в ООП это усовершенствованные переменные (почти дословная цитата из книги «Философия Java»).
Почему для меня это неожиданная мысль? Потому что я всегда воспринимал объекты в Java как некая сущность программы, которая помогает правильно работать с данными, другими словами есть данные (примитивные типы), а есть классы-функции, которые их обрабатывают. «Правильная» комбинация этих двух составляющих и создает рабочую программу. При таком восприятии не совсем понятно, к чему отнести интерфейсы, получается, что это некая надстройка для того, чтобы работал полиморфизм.
Что изменило в моем понимании посетившее меня «открытие»? Как раз-таки то, что именно интерфейсы создают магию ООП, ну и конечно же эти самые объекты-«усовершенствованные переменные», т.е. переменные нового типа, которых не было в языке изначально. Получается, что, создавая программу, мы оперируем различными типами переменных, которые могут быть «простыми», например int и «сложными», например класс Person, который умеет говорить (метод sayHello()). При этом то, как эти переменные будут между собой взаимодействовать и группироваться определяется интерфейсами. С другой стороны, в этом рассуждении можно пойти дальше и определить, что именно интерфейс определяет тип, поскольку он изначально абстрактен, тогда как класс-объект — это фактическая реализация определенного типа. Но вот дальше мои полномочия все, надо будет еще докрутить эту мысль... Если у меня будут новые «открытия» обязательно напишу.
В таком случае знакомая многим фраза «Программа – это набор объектов, указывающих друг другу, что делать, посредством сообщений» начинает играть новым красками.
Может получилась немного сумбурная мысль, но она на меня упала как снег на голову! Очень интересно ваше мнение, есть ли у вас похожее восприятие классов и интерфейсов?
1 минута
23 февраля 2024