Sha*_*awn 1 c# virtual inheritance overriding function
我检查了MSDN和其他几个网站,但我仍然不确定我得到了答案.如果你有一个带有虚函数Init()的Parent类,那么我可以 - 在派生类中 - 有一个覆盖函数Init(int num),或者你只需要为你创建的每个派生类创建一个新函数?如果我没有错,后者会导致你在Child类中有2个Init函数,对吧?这就是我的意思:
public class Parent {
protected int a;
public Parent() {
a=1;
}
public virtual void Init() {
}
}
public class Child : Parent {
public Child() {
}
//is this allowed?
public override void Init(int multiplier) {
}
//or do i have to do this and have 2 Init functions?
public void Init(int multiplier) {
}
}
Run Code Online (Sandbox Code Playgroud)
你实际上并没有覆盖这个方法,你只是定义了一个新的重载.
为了能够覆盖方法,必须将基本方法声明为public(或protected)virtual(或abstract)方法,并且派生类必须使用相同的精确签名.
在您的情况下,基类中不存在具有该签名的可覆盖方法,因此不允许这样做.它会如果重写方法与签名存在被允许Init(int),但没有,编译器会在这里产生一个错误.