безопасность и инкапсуляция
Суперкласс позволяет своим подклассам использовать только открытые и защищенные методы / поля.
Это позволяет разработчику суперкласса изменять реализацию этих методов, если он видит это лучше, без нарушения правильности подкласса.
Пример учебника - комплексное число класс.
Программисту, использующему этот класс, нужна только его функциональность, ему все равно, имеет ли реализация поля imaginary
и real
или с полями radius
и theta
[два разныхспособы представления комплексного числа.
Это дает разработчику класса ComplexNumber
больше свободы, если он хочет изменить класс в более поздних версиях, а также позволяет пользователю меньше беспокоиться: ему не нужно заботиться обо всех деталяхо некоторых позаботятся о нем.
Бонус : обратите внимание, что вы можете нарушить это поведение и получить доступ к закрытым полям и методам, используя reflection - но когдатак что все ставки сняты, и вы делаете это под свою ответственность.