§ ITPOW >> 文档 >> C#

C# 类继承-能改变隐藏、重写方法的访问修饰符吗?

作者:vkvi 来源:ITPOW(原创) 日期:2021-2-22

如果是隐藏(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 的意思。

相关文章