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