Проблема в том, что методы Базового класса являются его способом объявления его интерфейса. По сути, он говорит: «Это то, что вы можете сделать с объектами этого класса».
Когда в производном классе вы делаете что-то, что База объявила как публичное частное, вы забираете что-то. Теперь, даже несмотря на то, что производный объект "is-a" базовый объект, то, что вы должны делать с объектом базового класса, вы не можете делать с объектом производного класса, ломая Liskov Substitution Prinicple
Не вызовет ли это "техническую" проблему в вашей программе? Возможно, нет. Но это, вероятно, будет означать, что объекты ваших классов не будут вести себя так, как ожидают пользователи.
Если вы окажетесь в ситуации, когда это именно то, что вам нужно (за исключением случаев, когда устаревший метод упоминается в другом ответе), скорее всего, у вас есть модель наследования, где наследование на самом деле не моделируется »is-a , "(например, пример Скотта Майерса Square, унаследованный от Rectangle, но вы не можете изменить ширину квадрата независимо от его высоты, как вы можете для прямоугольника), и вам может потребоваться пересмотреть ваши классовые отношения.