Наследование в объектно-ориентированном программировании позволяет создавать иерархии классов, где дочерние классы могут наследовать свойства и методы родительских классов. Это способствует повторному использованию кода, уменьшает дублирование и обеспечивает более логическую иерархию классов. Например, мы программируем персонажей из РПГ игры. Каждый персонаж будет иметь свое здоровье и защиту (атрибуты) и уметь проводить контратаку (метод). Но маги умеют еще колдовать и им нужно добавить атрибут маны, охотники стрелять - им нужно указать количество стрел, а рыцари атаковать - добавить параметр прочности клинка. Если мы напишем отдельно классы колдуна охотника и рыцаря, то получим дублирование кода. В каждом классе придется прописать здоровье и защиту и функцию контратаки: Для того, чтобы этого избежать можно создать суперкласс (класс-родитель), например, класс Person в нем указать атрибуты здоровья и защиты, а также добавить метод контратаки: Теперь мы можем сделать классы Knight, Wiza