2010-11-19 5 views

답변

6

정적은 공유되며 상속받을 수 없음을 의미합니다. 당신이 이것을 할 수있는 방법이 없습니다.

-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()); 
+0

정적 클래스를 멤버 유형으로 사용할 수 없으며 단순히 인스턴스를 생성 할 수 없습니다. 그것은 추상적입니다. –

+0

@Ben. 나는 분명히해야했다. 내가 제안한 것은 정적 속성이 아니라 인터페이스를 구현하고 정적 동작을위한 정적 멤버가 포함 된 비 정적 유형의 인스턴스 속성이었습니다. 그러면 해당 클래스에서 상속하여 동작을 추가 할 수 있습니다. 공개적으로 정적 인 것은 없습니다. 그게 효과가 없을까요? – Laramie

0

은, 그들이 봉인, 정적 방법은 가상 수 없습니다.

디자인을 재검토해야 할 필요가 있다고 생각합니다. 정적 클래스 대신 싱글 톤 패턴을 사용하는 것이 좋을 것입니다. 그렇다면 문제없이 상속받을 수 있습니다.

하거나 고정 부재는 두 개의 클래스 조인 사용

정적 A 급 { 정적 B의 B 단계; }

관련 문제