C# 子类覆盖父类静态成员
在 C# 中,子类可以覆盖父类的静态成员,但是需要注意以下几点:
-
子类中的静态成员必须与父类中的静态成员具有相同的名称和签名。
-
子类中的静态成员必须使用关键字 "new" 来隐藏父类中的静态成员。
-
子类中的静态成员可以使用关键字 "override" 来覆盖父类中的静态成员,但是前提是父类中的静态成员必须是虚拟的。
下面是一个示例代码:
class A
{
public static void Foo()
{
Console.WriteLine("A.Foo");
}
}
class B : A
{
public new static void Foo()
{
Console.WriteLine("B.Foo");
}
}
class C : A
{
public static void Foo()
{
Console.WriteLine("C.Foo");
}
}
class D : A
{
public override static void Foo()
{
Console.WriteLine("D.Foo");
}
}
class Program
{
static void Main(string[] args)
{
A.Foo(); // 输出 "A.Foo"
B.Foo(); // 输出 "B.Foo"
C.Foo(); // 输出 "C.Foo"
D.Foo(); // 输出 "D.Foo"
}
}
在上面的示例中,类 A 定义了一个静态方法 Foo,类 B 继承自 A 并隐藏了 A 中的静态方法 Foo,类 C 继承自 A 并覆盖了 A 中的静态方法 Foo,类 D 继承自 A 并重写了 A 中的虚拟方法 Foo。在 Main 方法中,分别调用了 A、B、C、D 类中的静态方法 Foo,输出结果与对应的类中的方法实现相关
原文地址: https://www.cveoy.top/t/topic/clvw 著作权归作者所有。请勿转载和采集!