Предыдущие части: Научившись делать классы, ленивый программист входит во вкус. Разрабатывая свою воображаемую игру "игрок против монстров", он уже создал класс монстров, обладающий некоторыми нужными свойствами, такими как здоровье, сила и броня, а также метод move() для перемещения: Добавим-ка в класс Monster ещё один метод. Пусть монстр может трусливо убежать с поля боя, например. Назовем его escape(). Теперь можно заняться игроком. У него тоже есть здоровье, сила и броня, но кроме того, у него есть ещё количество патронов (ammo). Он также может перемещаться, но убегать для него не предусмотрено. Зато у него есть метод, чтобы поймать монстра живьем. Назовем его catch(). Ну вот, создано два класса: Player и Monster. Ленивый программист смотрит на это дело и начинает ныть: У игрока и у монстра есть одинаковые свойства: hp, strength, armor, а также одинаковый метод move(). Почему я должен писать одно и то же два раза? Вот бы сделать игрока и монстра одного класса. Но если просто соеди