同事通过允许派生类覆盖私有字段初始化,向我介绍了隐藏实现细节的概念。
例如我有一个基类:
public class Animal
{
private Dog dog;
private Cat cat;
private Mouse mouse;
protected virtual void Init()
{
dog = new Dog();
cat = new Cat();
mouse = new Mouse();
}
public void DoStuff() {}
}
这允许我覆盖基类privates的派生类中的初始化:
public class Cookie : Animal
{
protected override void init()
{
//do whatever i want here
}
}
我想要实现的目标是什么?
我有一个类(上例中的动物),它有大约20个需要初始化的私有对象,我希望能够在进行单元测试时定义我自己的初始化方法。
答案 0 :(得分:2)
1)这只是压倒一切,我不知道它不止于此。但是你不能访问子类中的私有字段,它们也必须受到保护,以便你可以在你的子类中访问它们。
2)你的问题不明确,但我猜你是在问如何从覆盖中调用基类的方法。你需要做的就是
public class Cookie : Animal
{
protected override void init()
{
//do whatever you want here
base.init(); //This line will call the init() function in Animal.
//do whatever you want here
}
}
答案 1 :(得分:1)
简称为override
。
覆盖方法提供了一个成员的新实现 继承自基类。
您可以调用base class
'使用overriden method
,Init()
derived class
base.Init();
。