小编JDo*_*Doe的帖子

从派生类隐藏属性

Jon Skeet在他的视频中提到了这个问题(虽然没有提供答案).

假设我们有一个名为Person的类,而Person类具有Name属性

然后我们有另一个班,间谍.当然,间谍是一个人,所以我们将从Person类派生.

public class Person
{
    public string Name { get; set; }
}

public class Spy : Person
{

}
Run Code Online (Sandbox Code Playgroud)

我们不希望人们知道Spy的名字,所以我们希望这会给出一个编译错误:

static void ReportSpy(Spy spy) {
  string name = spy.Name;
}
Run Code Online (Sandbox Code Playgroud)

或者:

static void ReportSpy(Spy spy)
{
   Person spyAsPerson = spy;
   string name = spyAsPerson.Name;
}
Run Code Online (Sandbox Code Playgroud)

我们怎么能防止这种事情发生呢?

c# inheritance

6
推荐指数
2
解决办法
140
查看次数

标签 统计

c# ×1

inheritance ×1