Я думаю, вы нарушите LSP.
Со страницы Википедии для LSP (это всегда ваш друг;):
«Более формально принцип замещения Лискова (LSP) - это конкретное определение отношения подтипов, называемое (сильным) поведенческим подтипом»
«Поведенческий подтип - более сильное понятие, чем типичное подтипирование функций, определенных в теории типов, которая полагается только на контравариантность типов аргументов и ковариантность возвращаемого типа. Поведенческое подтипирование в целом тривиально неразрешимо»
Похоже на ваш случай:
«Типичным примером, нарушающим LSP, является класс Square, производный от класса Rectangle, при условии, что методы получения и установки существуют как для ширины, так и для высоты. Класс Square всегда предполагает, что ширина равна высоте. Если Square объект используется в контексте, где ожидается прямоугольник, может возникнуть непредвиденное поведение, потому что размеры квадрата не могут (или, скорее, не должны) изменяться независимо. Эту проблему нелегко решить: если мы можем изменить методы установки в квадрате класса, чтобы они сохраняли инвариант Square (т. е. сохраняли равные размеры), то эти методы будут ослаблять (нарушать) постусловия для установщиков Rectangle, которые заявляют, что размеры могут быть изменены независимо. Нарушения LSP, подобные этому, могут или может не быть проблемой на практике "
person
andrey
schedule
22.12.2011