Добавление новых методов в суперклассы и возникающие в результате проблемы - PullRequest
1 голос
/ 27 сентября 2010

Пункт 16 Effective Java 2nd edition, предпочтение композиции перед наследованием говорит следующее

"Если суперкласс приобретает новый метод в следующем выпуске и вам не повезло дать подклассу метод с такой же сигнатурой и другой тип возврата, ваш подкласс больше не будет компилироваться.

Если вы дали подклассу метод с такой же сигнатурой и типом возвращаемого значения, как у новый метод суперкласса, теперь вы переопределяете его "

Насколько вероятно, что эти случаи возникают в реальной ситуации? Может ли кто-нибудь здесь дать мне пример из реального бизнес-приложения (при необходимости извлекая конфиденциальную информацию)?

1 Ответ

3 голосов
/ 27 сентября 2010

Дело не в том, вероятен этот сценарий.(Кроме того, я уверен, что вы слышали о Законе Мерфи )

Речь идет о том факте, что композиция является гораздо менее обязательным договором, чем наследование.

Наследование - это очень сильный способ связать поведение между классами, и в основном в пункте 16 говорится, что вы должны использовать эту сильную связь только тогда, когда ясно, что это необходимо.Для всех других применений состав должен быть предпочтительным.

...