派生类可以访问和操纵基类的状态

时间:2019-01-03 20:56:39

标签: c# inheritance clr

在“通过C#进行CLR”一书中,作者说  一个阶级必须保护自己的状态,并且永远不允许自己 变得腐败。打开类时,派生类可以访问和操纵 基类的状态,如果可以访问任何数据字段或内部操纵字段的方法 而不是私人的

我想知道这种情况的示例

1 个答案:

答案 0 :(得分:0)

从字面上看,作者试图说的是将所有字段都隐藏为私有字段,并且仅允许通过公共/受保护的属性获取器和设置器和/或方法对其值进行操作。这些方法,设置器和获取器应具有逻辑/检查功能,以防止数据完整性损坏。

说,您有一个国际象棋人物的对象。它具有char和int的当前位置字段(例如H8或A2)。首先,不允许使用某些位置(例如Z90),或者由于图形类型(大象无法向前移动)而在下一移动中可能无法到达某些位置。因此,如果位置字段不是私有的,则祖先类可以直接修改它们并破坏逻辑/完整性。但是,如果将位置字段隐藏为私有字段,并且只允许通过Move(MoveType move)之类的方法移动,那么这种数据损坏是不可能的。