1

只是想了解什么是最好的方法,我会尝试解释我的问题,这似乎是一个更长的问题,抱歉,

我有一个类 Element,两个类 Shape 和 Audio 派生自它,另外两个类 Text 和 Image 派生自 Shape,进一步的类 Video 派生自 Image。我需要在这些类中的每一个上实现一个类型属性,该属性必须具有只读性质,因为除了实际类型之外,没有任何意义在这些类中设置类型,例如:Image 上的 Type 属性将始终返回一个值 Image 而没有别的。那么如何实现这个强制所有类实现 Type 属性的层次结构呢?这些类中的每一个都有自己的功能,而不是可以标记为抽象的基本元素类,这将允许我将类型属性标记为抽象,这将强制它在派生类上实现,但仅限于一个级别,我如何强制它在视频上实施?请建议我最好的方法。

提前致谢。

4

2 回答 2

1

创建一个定义Type属性的接口,使所有需要强制实现Type的类都继承自该接口。

于 2012-08-16T12:44:19.703 回答
1

正如您所说,基类可以使属性抽象,这将强制它由所有派生类实现。但是,如果您的第二层类(文本和图像)是具体的,则不能强制派生类(视频)实现方法(因为根据定义,具体类必须完全实现)。

您可以在 Text/Image 类中轻松地将属性标记为 Virtual,以便它可以被派生类覆盖,但这不会强制它。

也许您可以使用泛型和泛型基类或接口做一些事情,但这取决于您对设计的更多了解。

您可能需要重新考虑如何设计对象层次结构(如果可能) - 也许 Video 不应该从 Image 派生。这真的是“是”关系吗?如果没有,也许您可​​以更改对象层次结构或使用接口而不是基类来实现所需的结果。

于 2012-08-16T12:44:19.720 回答