我有一个静态类,我想从另一个静态类继承,但编译器禁止这样做。 “静态类必须来自对象”
我想知道为什么,有没有解决办法?
答案 0 :(得分:6)
静态意味着共享,并且不可继承。你无法做到这一点。
答案 1 :(得分:0)
无法从静态类继承,它们是密封的,静态方法不能是虚拟的。
我认为您需要重新考虑您的设计,您可以考虑使用单例模式而不是静态类,然后您就可以继承而没有任何问题。
或者只使用静态成员加入两个类:
静态类A. { 静态B b; }
答案 2 :(得分:-1)
您将无法通过继承来实现此目的。尝试使用Composite Pattern。
在其中,您有几个实现和接口的对象,并且将由将其作为其成员的静态类“组合”。好处是您可以向每个实现接口的新类添加行为,并且在运行时可以互换。
修改强>
public class Foo
{
protected static class StaticClass
{
public static int Count { get; set; }
}
public virtual string GetBars()
{
return "I am Foo: " + StaticClass.Count++;
}
}
public class FooToo:Foo
{
public override string GetBars()
{
return "I am Foo Too: " + StaticClass.Count++;
}
}
...然后
Foo foo = new Foo();
Foo fooToo = new FooToo();
Console.WriteLine(foo.GetBars());
Console.WriteLine(fooToo.GetBars());