继承一个静态类

时间:2010-11-19 02:01:31

标签: c# .net

  

可能重复:
  How can a static class derive from an object?

我有一个静态类,我想从另一个静态类继承,但编译器禁止这样做。 “静态类必须来自对象”

我想知道为什么,有没有解决办法?

3 个答案:

答案 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());