相关疑难解决方法(0)

私有,公共和受保护继承之间的区别

是什么区别public,private以及protected用C++继承?我在SO上发现的所有问题都涉及具体案例.

c++ inheritance encapsulation c++-faq access-specifier

952
推荐指数
14
解决办法
65万
查看次数

从派生类隐藏属性

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
查看次数

标签 统计

inheritance ×2

access-specifier ×1

c# ×1

c++ ×1

c++-faq ×1

encapsulation ×1