Используется наследование, полиморфизм, переопределение и исключения.