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

  • C# 类继承-静态类能被继承吗?
  • C# 类继承-构造函数能继承吗?
  • C# 类继承-能改变隐藏、重写方法的返回值类型吗?
  • C# 类继承-能改变隐藏、重写方法的访问修饰符吗?

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

  • C# 类继承-静态类能被继承吗?
  • C# 类继承-构造函数能继承吗?
  • C# 类继承-能改变隐藏、重写方法的返回值类型吗?
  • C# 类继承-能改变隐藏、重写方法的访问修饰符吗?

你可能感兴趣的