재우니의 블로그




이번에는 오버라이딩에 대해서 설명하고자 합니다.



오버라이딩 즉 overriding 은 메소드를 재정의한다고 생각하시면 되는데요. 
이는 new 키워드와 다른 결과를 나타내고 있는데요.

base class 에는 virtual 이라는 키워드를 사용하고, derived class 에는 override 라는 키워드를 사용한답니다. 
virtual 은 말 그대로 "가상의"라는 뜻으로 가상의 메소드를 사용하겠다는 의미를 담고 있고요.

이 가상의 메소드를 derived class 에 재정의하고자 할때는 override 키워드를 사용하면 됩니다. 




소스를 보면서 설명하죠.







상속을 기술하고(20줄), 생성자를 기술하고(9줄), virtual 키워드를 이용하여 14줄 처럼 기술합니다.
23줄은 생성자를 base 키워드를 이용하여 상속을 받아 재활용을 하여 설정하고, virtual 에 기술한 내용과 동일하게 28줄처럼 override 키워드를 이용하여 반환값 이외에는 데이터형식과 메소드명을 동일하게 해야 합니다.






먼저 derived class 의 객체를 선언,생성하여 virtual 메소드를 호출하기위해, 소스 40번처럼 기술했지만, derived class 의 메소드가 호출되고 말죠.

한마디로 base class 에서 기술한 virtual 은 말 그대로 가상공간입니다.

결과값을 살펴보죠.





만약에 new 키워드를 이용한다면 각각의 클래스에서 선언한 반환값이 나오겠죠.



posted by 심재운 (shimpark@gmail.com)