什么是脆弱基类问题?
Java中脆弱的基类问题是什么?
脆弱的基类是继承的常见问题,它适用于Java和任何其他支持继承的语言。
简而言之,基类是您从中继承的类,它通常称为脆弱类,因为对此类的更改可能会在从它继承的类中产生意外结果。
减轻这种情况的方法很少;但是没有直接的方法在仍然使用继承的同时完全避免它。您可以通过像在 Java 中那样标记类声明来防止其他类从类继承。final
避免这些问题中最糟糕的一个最佳做法是将所有类标记为最终类,除非您特别打算从它们继承。对于那些打算从中继承的人,设计它们就像在设计API一样:隐藏所有实现细节;严格对待你发出的东西,小心你接受的东西,并详细记录班级的预期行为。
当对基类所做的更改破坏派生类时,基类称为脆弱类。
class Base{
protected int x;
protected void m(){
x++;
}
protected void n(){
x++; // <- defect
m();
}
}
class Sub extends Base{
protected void m(){
n();
}
}