簡體   English   中英

如何用與子類不同的值初始化父類的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM