Из нескольких кратких вопросов о том, что я обнаружил ошибку при переопределении методов суперкласса в подклассе, когда я делаю следующее:
- Переопределить защищенный метод суперкласса с помощью метода частного подкласса
- Переопределить общедоступный метод суперкласса с помощью метода защищенного или частного подкласса.
Однако, если я делаю это в другом направлении, ошибка не возникает:
- Переопределение частного метода суперкласса с защищенным или общедоступным подклассом
- Переопределение защищенного метода суперкласса с помощью метода общедоступного подкласса
Это кажется мне интуитивным противником - я ожидал, что он будет работать наоборот, чтобы обеспечить скрытие и инкапсуляцию информации. Это, по-видимому, позволяет создать плохой дизайн, позволяя внутренним структурам подвергаться воздействию, способным нарушить другие методы, и я не вижу случая, когда это будет хорошей идеей. Почему это было реализовано таким образом и что я пропустил?
Кроме того, эта стандартная практика на других языках программирования?