[英]How to initialize properties of parent class with different value than child
我有以下類層次結構
class Category{
protected int _discount;
}
class SubCategory:Category{
// some other properties
}
class Item:SubCategory{
// some more properties
public Item (int discount){
_discount = discount;
}
}
當我用下面的代碼 Item item = new Item(10); 它會將 Item 類的 _discount 設置為 10。 我還想為具有不同值的 SubCategory 和 Category 類設置 _discount。 一種方法是在 Item 構造函數中傳遞 3 個不同的折扣值並適當地分配給父項。
我可以做的另一種方法是公開 Item 類中的方法以顯式設置基類中的屬性值。
有沒有其他最適合 OOP 概念的解決方案。 在某個地方,我對我在這里所做的事情不太滿意。
_discount
變量沒有作用域,因此是隱式private
。 您需要使其可由派生類訪問,在這種情況下,您可能希望它受到protected
,定義為(強調我的):
受保護的成員可在其類內和派生類實例中訪問。
這意味着您的代碼將是:
public class Category
{
protected int _discount;
}
注意:這是一個很好的例子,說明為什么你應該總是為所有事物指定范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.