Я читаю Дж. Блоха Эффективную Java, и теперь я нахожусь в разделе наследования и композиции. Насколько я понял, он сказал, что наследование не всегда хорошо.
Связанная причина хрупкости в подклассах заключается в том, что их суперкласс могут приобретать новые методы в последующих выпусках. Предположим, что программа зависит от его безопасности от того, что все элементы, вставленные в некоторые коллекции удовлетворяют некоторому предикату. Это может быть гарантировано на подклассификация коллекции и переопределение каждого метода, способного добавление элемента, чтобы убедиться, что предикат выполняется до добавление элемента. Это отлично работает до нового метода, способного добавление элемента добавляется в суперкласс в следующем выпуск.
Но почему это не работает? Суперкласс - это просто интерфейс Collection
, и если мы добавим новый метод, мы просто ошибка времени компиляции. Это не вредно когда-либо...