【发布时间】:2019-06-18 14:40:10
【问题描述】:
我有以下类层次结构
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 类设置不同的值。 一种方法是在 Item 构造函数中传递 3 个不同的折扣值并适当地分配给父母。
我可以做的另一种方法是在 Item 类中公开方法以显式设置基类中的属性值。
还有其他最适合 OOP 概念的解决方案吗?在某个地方,我对我在这里所做的事情不太满意。
【问题讨论】:
-
你的继承权在哪里?
-
在谈到 OOP 中的继承时,诸如“父”和“子”之类的术语非常具有误导性。而是使用“基本类型/类”和“派生类型/类”(或“基本类型的特化”)之类的术语。就 OOP 继承而言,派生类型与其派生的基类型之间没有真正的父子关系。
-
@DavidG 我打算用作文来回答他,因为它看起来像这样,但是他如何在没有继承而不是作为财产的情况下获得 _discount?这不可能是代码...
-
真的很抱歉没有指定继承。更新了问题