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