2012-07-22 3 views
0

C의 메서드 또는 속성 숨김의 장점과 단점은 무엇입니까?장점과 단점은 C# 숨어있는 메서드?

+0

공개 수정 대 개인 수정자를 사용 하시겠습니까? – rekire

+0

속성 숨기기가 아닙니다. 파생 클래스에서. 기본 클래스의 메서드 속성을 숨길 수 있습니다. –

답변

2

new 키워드를 사용하여 숨기는 방법은 다형성을 깨는 효과가 있습니다. 메서드 숨기기를 사용하는 경우 기본 형식이나 인터페이스를 통해 메서드에 액세스 할 때 숨겨진 동작을 호출 할 수 없습니다.

void Main() 
{ 

    var nohiding = new NoHiding(); 
    var hiding = new Hiding(); 

    nohiding.DoSomething(); // "Overridden Method" 
    hiding.DoSomething(); // "Hidden Method" 

    var nohidingAsBase = (Base) nohiding; 
    var hidingAsBase = (Base) hiding; 

    nohidingAsBase.DoSomething(); // "Overridden Method" 
    hidingAsBase.DoSomething(); // "Base Method" 

} 

public class Base 
{ 
    public virtual void DoSomething() 
    { 
     Console.WriteLine("Base Method"); 
    } 
} 

public class NoHiding : Base 
{ 
    public override void DoSomething() 
    { 
     Console.WriteLine("Overriden Method"); 
    } 
} 

public class Hiding : Base 
{ 
    new public void DoSomething() 
    { 
     Console.WriteLine("Hidden Method"); 
    } 
} 

귀하의 장점/단점에 관해서는 명확한 목록이 없습니다. 메소드 숨기기는 거의 사용되지 않았으며, goto 키워드와 약간 비슷하다고 할 수 있습니다. 일반적으로 사용하는 것이 아니라 특정 상황에서 매우 도움이 될 수 있습니다.

2

속성 숨기기에는 이점이 없다고 생각합니다. 기본 클래스의 속성이나 메서드가 가상 또는 추상으로 정의되지 않았거나 메서드가 반환 형식에 따라 기본 클래스 메서드와 다른 경우이 작업을 수행해야합니다. 단점은 분명합니다. 기본 클래스 메서드가 여전히 존재하므로 클래스 사용자가 메서드를 사용하도록 할 수있는 방법이 없습니다.

관련 문제