Какова проблема хрупкого базового класса?

Какова проблема хрупкого базового класса в Java?

25
задан drewh 27 May 2010 в 13:18
поделиться

2 ответа

Хрупкий базовый класс - обычная проблема с наследованием, которая применима к Java и любому другому языку, поддерживающему наследование.

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

Есть несколько способов смягчить это; но нет простого способа полностью избежать этого при использовании наследования. Вы можете предотвратить наследование других классов от класса, пометив объявление класса как final в Java.

Лучший способ избежать наихудшей из этих проблем - пометить все классы как final, если вы специально не собираетесь наследовать от них. Для тех, кто намеревается наследовать, проектируйте их так, как будто вы разрабатываете API: скройте все детали реализации; строго относитесь к тому, что вы излучаете, и внимательно относитесь к тому, что вы принимаете, и подробно документируйте ожидаемое поведение класса.

26
ответ дан 28 November 2019 в 21:18
поделиться

Базовый класс называется хрупким, когда внесенные в него изменения нарушают производный класс.

class Base{
    protected int x;
    protected void m(){
       x++;
    }

    protected void n(){
      x++;      // <- defect 
      m();
     }
 }


class Sub extends Base{
        protected void m(){
            n();
        }
    }
13
ответ дан 28 November 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: