Прежде всего: «Переопределение» относится к виртуальному переопределению. Вы говорите о создании сокрытия методов, а не переопределения методов.
У меня есть свойство в базовом классе, которое я не хочу скрывать
Вы можете этого хотеть, но вам придется научиться жить с разочарованием того, что вы не получаете того, чего хотите.
Я не вижу причин, чтобы кто-то это скрывал.
Тогда проблем не будет, не так ли? Если никто не сможет хотеть скрыть это, то они не будут это скрывать. Вы в основном говорите: «У меня есть объект, который ни для кого не имеет значения; как мне удержать кого-то от его кражи?» Ну, если это бесполезно, то никто не захочет его украсть, так зачем вам тратить деньги на сейф, чтобы защитить то, что никто не хочет украсть?
Если у кого-то нет причин скрывать или отменять ваш метод, то никто не будет. Если является причиной для того, чтобы кто-то скрыл или переопределил ваш метод, то кто вы такой, чтобы говорить им не делать этого? Вы предоставляете базовый класс; вы слуга автора производного класса, а не их хозяин .
Теперь иногда быть хорошим слугой означает создавать что-то, что противостоит неправомерному использованию, надежно и по разумной цене. Например, я призываю людей строить закрытые классы. Разработка безопасных, надежных, наследуемых классов, соответствующих реальным потребностям наследников, - это дорого и сложно .
Но если вы собираетесь создать надежный незапечатанный базовый класс, предназначенный для наследования, зачем пытаться помешать автору производного класса скрываться, если у него есть причина для этого? Это не может повредить базовый класс . Единственные люди, которым он может навредить - это пользователи производного класса , и эти люди являются проблемой автора производного класса, а не вашей.