現在,讓我們應用耦合的概念到繼承。在一個用extends的繼承實現系統中,派生類是非常緊密的和基類耦合,當且這種緊密的連接是不期望的。設計者已經應用了綽號“脆弱的基類問題”去描述這個行為;A類被認為是脆弱的是,因為你在看起來安全的情況下修改基類,但是當從派生類繼承時,新的行為也許引起派生類出現功能紊亂。你不能通過簡單的在隔離下檢查基類的方法來分辨基類的變化是安全的;而是你也必須看(和測試)所有派生類。而且,你必須檢查所有的代碼,它們也用在基類和派生類對象中,因為這個代碼也許被新的行為所打破。一個對于基礎類的簡單變化可能導致整個程序不可操作。
讓我們一起檢查脆弱的基類和基類耦合的問題。下面的類extends了Java的ArrayList類去使它像一個stack來運轉:
class Stack extends ArrayList
{
private int stack_pointer = 0;
public void push( Object article )
{
add( stack_pointer++, article );
}
public Object pop()
{
return remove( --stack_pointer );
}