섀도잉

int num = 10; (전역변수) void A(){ int num = 20; Console.WriteLine( num );}

위와 같이 코딩을 하였을 때, 콘솔 창에 출력되는 것은 함수 A에서 생성된 num의 값인 20이다.

이와 같이 특정 영역에서 이름이 겹쳐져 다른 변수를 가리는 것을 섀도잉 이라고 한다!


하이딩

class Program { class Parent { public int variable = 273; } class Child : Parent { public string variable = "shadowing"; } static void Main(string[] args) { Child child = new Child(); Console.WriteLine(child.variable); } }

하이딩과는 달리 부모 클래스와 자식클래스 간에 동일한 이름으로 변수를 생성하여 사용하는 상황이다.

Main문을 보았을때 과연 무엇이 출력 될 것이라고 생각하는가?

정답은 ? " Shadowing "이 출력 된다. 섀도잉과 비슷하게 가장 가까운 클래스 내부의 문자열 변수를 사용한다고 생각하면 된다.

하이딩을 사용하는 것은 정상적인 상속을 막으므로 되도록이면 변수명을 다르게하여 하이딩 상황이 일어나지 않도록 하는 것이 좋겠다.





+ Recent posts