是什么区别public,private以及protected用C++继承?我在SO上发现的所有问题都涉及具体案例.
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)
我们怎么能防止这种事情发生呢?