【发布时间】:2015-11-12 17:42:58
【问题描述】:
我试图弄清楚是否有可能我如何强制子类在从父类派生的静态方法中使用他们自己的变量。
class Parent
{
public static string myString = "I don't want this string";
public static void MyMethod()
{
Console.Write(myString);
}
}
class Child : Parent
{
public static string myString = "I want THIS string";
}
class Program
{
static void Main()
{
Child.MyMethod(); // I want to output "I want THIS string";
}
}
有什么办法吗?
【问题讨论】:
-
如果您使用属性而不是字段并且它不是
static,您可以在基类中使用virtual关键字,然后在继承类中使用override,或者可能是new关键字。 -
@BrettCaswell
new如何帮助改变基类的行为??? -
@AlexeiLevenkov,OP 没有说他想改变基类的行为。他为什么要这样做? ....他希望孩子拥有自己的变量和与“父”对象同名的方法,
-
@BrettCaswell “在从父级派生的静态方法中” - 虽然此语句使用“派生”,但我认为 OP 的意思不是“自己的方法”而是“继承的方法”。现在我明白了如何将其解释为“如何让孩子使用自己的方法”,但我最初阅读这篇文章时并没有看到这种可能性。
标签: c# static static-methods static-members