Ниже приведены примеры задач, в которых можно использовать полиморфизм и наследование:
1. Задача о животных: Создать класс Animal, от которого наследуются классы Mammal, Bird и Fish. Каждый класс должен иметь методы eat(), sleep() и makeSound(). В каждом классе метод makeSound() будет реализован по-разному, чтобы имитировать звуки, которые издает каждое животное.
2. Задача о фигурах: Создать абстрактный класс Shape, от которого наследуются классы Rectangle, Circle и Triangle. В классе Shape определить методы calculateArea() и calculatePerimeter(), которые должны быть переопределены в каждом классе наследнике.
3. Задача о музыкальных инструментах: Создать базовый класс Instrument, от которого наследуются классы Piano, Guitar и Violin. В каждом классе реализовать метод play(), который будет воспроизводить звук соответствующего инструмента. В классе Instrument определить абстрактный метод tune(), который должен быть реализован в каждом классе наследнике.
Эти примеры демонстрируют использование полиморфизма и наследования, так как различные классы наследники могут иметь разные реализации общих методов, но могут быть использованы в коде общим способом благодаря наследованию.