什么是脆弱基类问题?

2022-09-01 06:46:52

Java中脆弱的基类问题是什么?


答案 1

脆弱的基类是继承的常见问题,它适用于Java和任何其他支持继承的语言。

简而言之,基类是您从中继承的类,它通常称为脆弱类,因为对此类的更改可能会在从它继承的类中产生意外结果。

减轻这种情况的方法很少;但是没有直接的方法在仍然使用继承的同时完全避免它。您可以通过像在 Java 中那样标记类声明来防止其他类从类继承。final

避免这些问题中最糟糕的一个最佳做法是将所有类标记为最终类,除非您特别打算从它们继承。对于那些打算从中继承的人,设计它们就像在设计API一样:隐藏所有实现细节;严格对待你发出的东西,小心你接受的东西,并详细记录班级的预期行为。


答案 2

当对基类所做的更改破坏派生类时,基类称为脆弱类。

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

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


class Sub extends Base{
        protected void m(){
            n();
        }
    }