如果是隐藏(new),访问修饰符是可以不一样的
如下,public 变 protected 是可以的,外部调用的时候,实际调用的是基类的 F()。但是这么干有什么意义呢?小变大还稍微有点意义,小变大也是允许的。
public class B { public string F() { return "itpow"; } } public class D : B { protected new int F() { return 0; } }
如果是重写(virtual 与 override),访问修饰符是必须一样的
大变小、小变大都不行。如下,会出错,编译都通不过。
public class B { protected virtual string F() { return "itpow"; } } public class D : B { public override string F() { return ""; } }
如果是抽象(abstract),访问修饰符是必须一样的
因为 abstract 也隐含了 virtual 的意思。