new
关键字、隐藏基类方法
new
关键字还可以用来隐藏基类中的方法。
当子类的方法名称与基类中的方法名称相同,但不希望子类的方法被视为重写(override)基类的方法时,可以使用 new
关键字来声明子类的方法,
从而隐藏基类的方法。
代码示例
public class BaseClass
{
public virtual void Show()
{
Console.WriteLine("BaseClass.Show()");
}
}
public class DerivedClass : BaseClass
{
// 使用 new 关键字隐藏基类的方法
public new void Show()
{
Console.WriteLine("DerivedClass.Show()");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass baseObj = new DerivedClass();
baseObj.Show(); // 调用 BaseClass.Show()
DerivedClass derivedObj = new DerivedClass();
derivedObj.Show(); // 调用 DerivedClass.Show()
}
}
应用场景
- 隐藏而非重写方法:在子类中,如果你不希望子类的方法重写基类的方法,而是完全独立于基类的方法,可以使用
new
关键字。例如,在某些特定场景下,子类需要提供与基类同名但功能不同的方法。