Programming/c# & winform2020. 9. 23. 11:33

변수에는 오버라이드 개념이 없고

변수에게 있어서 동일 이름이라 숨겨지는 건 하이드라고 표현하는 듯.

기존의 scope를 다른게 표현 하는 느낌이기도 하고(객체로 확장시키면서)...

조금 더 봐야 할 듯?

 

섀도잉(shadowing)

클래스내 멤버 변수가 멤버 메소드내에 선언한 변수에 의해 가려지는 경우

 

하이딩(hiding)

상속 관계에서 상위 객체의 변수가 하위 객체에서 선언한 변수에 의해 가려지는 경우

 

오버라이드(overriding)

상속 관계에서 상위 객체의 메소드가 하위 객체에서 선언한 메소드에 의해 가려지는 경우

해당 내용에 다음과 같은 설명이 있습니다.

case 2:
When you override a member variable in a child class (actually its hiding, not overriding),
which version of that variable will be called depends on the reference, the object, unlike method lookup. 
 
In your sample code, variable a and b are not actually member variable,
they are class variable since static.
Lets change the sample code a bit,
making the 'a' in class 'A' public and adding some test code in main. 

즉, 변수는 override되는 것이 아니라 hiding되는 것이며 dynamic하게 lookup되는 것이 아닙니다.
한 마디로, B의 a는 A의 a를 그저 hiding하는 것이고 A의 a와는 별개의 변수이며,
getA는 자기가 정의된 시점의 a를 a로 생각하게 됩니다. B의 a에 대해서는 아예 모르죠.

[링크 : https://kldp.org/node/110902]

'Programming > c# & winform' 카테고리의 다른 글

c# conditional attribute  (0) 2020.09.29
mono로 sln 프로젝트 빌드가 되네?  (2) 2020.09.28
c# 오버라이드, 하이드, 쉐도우  (0) 2020.09.23
c# 상속  (0) 2020.09.23
c#은 main()이 아니다 Main()이다 -_-  (0) 2020.09.23
c# base, is  (0) 2020.09.22
Posted by 구차니

댓글을 달아 주세요