Liskov Substitution Principle и конструкторите
Здравейте!
За да бъде спазен Liskov принципът, трябва ли наследникът задължително да има същия конструктор като parent-класа?
Гледам 5-а задача от лаба, тази с правоъгълника и квадрата. Приемаме, че Square extend-ва Rectangle. За примера си създаваме конструктор за Rectangle(int width, int height). Ако вместо Square(int width, int height) + проверки дали аргументите са равни, просто направим Square(int side) и после super(side, side), чупим ли Liskov принципа? Ако да, питам се как бихме могли да създаваме обекти наследници с различни характеристики от тези на базовия клас?
Попаднах на друг интересен пример... Ако имаме базов клас Square и негов наследник ColoredSquare, който се нуждае от още един параметър - color, това нарушава ли принципа?
Четох на няколко места по темата, но не намерих категоричен отговор. Има ли такъв изобщо?