我有下面的类层次结构
class Category{
protected int _discount;
}
class SubCategory:Category{
// some other properties
}
class Item:SubCategory{
// some more properties
public Item (int discount){
_discount = discount;
}
}
当我使用以下代码初始化项目 项目项 = 新项 (10(;它将项目类的_discount设置为 10。我还想为子类别和类别类设置具有不同值的_discount。一种方法是在 Item 构造函数中传递 3 个不同的折扣值,并相应地分配给父项。
我可以做的另一种方法是在 Item 类中公开方法以显式设置基类中的属性值。
是否有其他解决方案最适合 OOP 概念。在某个地方,我对我在这里所做的事情不是很舒服。
_discount
变量没有作用域,因此隐式private
。您需要使派生类可以访问它,在这种情况下,您可能希望它被protected
定义为(强调我的(:
受保护的成员可以在其类中访问,也可以由派生类实例访问。
这意味着您的代码将是:
public class Category
{
protected int _discount;
}
注意:这是一个很好的例子,说明为什么您应该始终在所有事物上指定范围。