
Комментарии 6
ООП?
Ща начнется... А платить кто будет?
Мужик вбегает в пивную:
- Бармен, быстрее, кружку пива, пока не началось, пока не началось!
Бармен наливает ему кружку пива, мужик залпом выпивает ее и кричит:
- Бармен, быстрее, пока не началось, еще кружку, пока не началось!
Бермен:
- А платить кто будет?
Мужик, усталым голосом:
- Ну вот, началось...
В следующем примере я бы скорее написал что start это лишь сигнатура метода. Иначе новичков может путать абстрактный класс vs интерфейс, но с "абстрактными" методами
interface
Vehicle {
void
start(); // Абстрактный метод - без реализации
В примере Transport маленькая опечатка. Один раз 0,15 это 15 рублей, а дальше 5 это 5 рублей.
За использование композиции респект, но я бы предал ему ещё больше значения. Один раз работал в проекте, где иерархия доходила до 7 уровней: Каждый раз когда нужно было добавить ещё атрибутов, добавляли новый абстрактный класс (*facepalm*). Композиция бы сделала жизнь разработчиков значительно легче.
Спасибо за статью. Было приятно освежить в воспоминаниях Java
Когда делаешь класс на основе интерфейса
class
Car
implements
Vehicle
Там разве надо override у методов?
автору лайк, но есть вопрос,скорее риторический, почему бы не объяснять на примере excel? ведь класс это "шаблон" пустой бланк, справка , любой типовой документ(не заполненный ) это класс, паспорт, к примеру, с фоткой и именем - экземпляр, без - класс. а абстракция это тот же паспорт но натыканый в excel документ, и его можно брать и сделать загранник и мы уже сделали новый клас от абстракции и ТД и тп. я уже давно понимаю классы не как что-то "близкое к человеку", а как некую структуру ( но это моя шиза), но учили меня именно Person new Person или Car new Car, это ужасно путало. наболело амсори
ООП — это мощный инструмент, который помогает организовать сложный код.
Rich Hickey с этим не согласен.
Далее мой личный бред (поэтому не стоит воспринимать его серьёзно): ООП это всего лишь конструкт над "сообщением" - следующий этап развития языков программирования после процурных, где программа это в конце концов огромная процедура с ветвлениями. ООП говорит по другому: вот есть типы - объекты или иерархия объектов (абстракция), они сами знают как им работать (исполнять код), их реализация скрыта (инкапсуляция) от внешнего наблюдателя, они выставляют наружу свой интерфейс (контракт) (полиморфизм) и принимают сообщения и сами могут отравлять сообщения другим объектам. Наследование это просто переиспользование общего кода иерархией - делегирование выполнения родительским типам. И таким образом мы можем выстраивать программу более сложную по структуре, но легче для понимания и написания программистом, чем процедуры - просто через обмен сообщениями.
Ну как-то так - прошу сильно не пинать - все вышесказанное это обобщение.
Java ООП: 4 принципа, которые стоит понимать, а не просто заучивать