兒子與父親斷絕關係 繼承和抽象

2021-09-30 10:38:57 字數 1472 閱讀 1960

如果乙個類是另乙個類的擴充套件或延伸,那麼可以考慮是否可以用繼承,另外還需要權衡使用繼承後這個物件是否受制於父類,是否降低了靈活性。繼承只是繼承父類的特性而不能了解父類所有的東西,比如私有的函式、屬性等。而抽象是父子間相同的問題不能達成共識的時候就需要使用了,畢竟每個人有每個人的思考方式,不能把個人的意志強加於他人身上。所以,抽象是繼承的乙個公升級,廣開言路、求同存異耳。

public class father

public void setname(string name)

public int getage()

public void setage(int age)

@suppresswarnings("unused")

private void playcard()

}public class son extends father

}

兒子和父親雖然都有名字和年齡,但兒子並不知道父親會打牌、父親也不知道兒子能工作。如果輕率地改變父親的私有方法那麼兒子就會學會打牌了,兒子如果以打牌為樂、是不是會忘了工作呢?所以,繼承也並非什麼都好,子類會被父類影響那麼最好慎用繼承。顯然,兒子可以拒絕在工作的時候玩牌,但是就需要增加工作時不能玩牌的邏輯處理了。所以,修改後的**是這樣:

public class son extends father

@suppresswarnings("deprecation")

private boolean canplaycard()

return true;

} @override

public void playcard()

else

}}

這時候就可以考慮使用抽象類來實現了,不在需要使用繼承受父類的影響了。

public abstract class abstractclass

public void setname(string name)

public int getage()

public void setage(int age)

public abstract void playcard();

}

現在father、son繼承這個抽象類實現自己的玩牌規則就行了:

public class father extends abstractclass

}public class son extends abstractclass

public void playcard()

}

以前兒子見不慣父親只會打牌,兒子以此為恥給自己定下了打牌的規矩,從這裡看出father和son已經斷絕父子關係了,故事講訴完畢。

8,繼承與關係

概要 對於一張表,可能存在多重型別。我們可以用繼承來定義它們。實體關係的應用,解決資料表和表之間一些複雜問題。內容 論壇主題表 dbo.topics 欄位名 字段型別 可空 備註 topicid intnot null identity 主鍵 topictitle varchar 50 not nu...

繼承與組合關係

其中乙個編輯原則是 少用繼承多用組合 這句經典的話其實很容易明白,因為在編寫 路上很快就遇到這問題,也很快就明白為什麼,但我為什麼又要記入和?因為我有另乙個層次的體會 在繼承中我們無法呼叫繼承物件,而組合物件誰都可以呼叫。就這句是我體會到的 舉個例子 孩子繼承父親,孩子擁有父親的物件,在呼叫時chi...

c 友元關係與繼承

友元關係不能繼承。基類的友元對派生類的成員沒有特殊訪問許可權。如果基類被授予友元關係,則只有基類具有特殊訪問許可權,該基類的派生類不能訪問授予友元關係的類。class base frnd has no access to members in d1 class d1 public base clas...