2019. 4. 14. 17:33ㆍ개발 관련 학습정리/C#
시험기간때문에 바뻤다가 오랜만에 c#을 공부하게 되었다.
평소에 많이 들었던 오버라이딩을 공부했다.
오버라이딩을 하기 위해서는 메소드가 virtual 로 선언해 놔야하며,
상속된 클래스에서 그 메소드를 재정의 해줍니다. 메소드를 재정의 하고 있음을 알리기 위해 override라는 키워드로 메소드를 정의해줍니다.
amor라는 부모 클래스. virtual키워드 함수 initialize를 생성합니다.
그 밑에 자식 클래스 ironman과 warmachine을 생성, 안에 override initialize각각 선언후 출력을 다르게 해놓습니다.
첫번째는 amor에서 메서드를 호출시켰으므로 Armored가 뜨고,
두번째는 amor 의 ironman에다가 ironman클래스로 선언을 해서 override를 거쳐 repulsor와 Armored가 뜰것입니다.
세번째도 마찬지로 warmachine에 있는 특징을 출력시키고 기본amor에 있는 특징이 출력될것입니다.
다음은 메서드 숨기기로, 간단한 구조를 가지고 있습니다.
클래스 a와 상속되있는 b가 있습니다.
밑에는 new 키워드를 사용하여 새로운 메소드를 만들었습니다.
이렇게 new 키워드를 붙이게 되면,
맨 마지막 A의 cobj에서 b를 선언할 경우 정상적으로는 b.method가 호출되야하지만, 숨겨져서 a.method가 출력됩니다.
이와 같은 메서드 숨기기는 완전한 다형성을 표현하지 못하는 한계를 갖고 있습니다. 따라서 기반 클래스를 설계할때는
파생 클래스의 모습까지 고려해야 합니다.
'개발 관련 학습정리 > C#' 카테고리의 다른 글
C# 추상클래스와 인터페이스 (0) | 2021.01.26 |
---|---|
C# Delegate (0) | 2021.01.25 |
c# property (0) | 2021.01.12 |
[C#] 클래스 : 정적필드, 얕은 복사와 깊은 복사, this 키워드 (0) | 2019.04.01 |
[C#] 클래스 : 생성자, 소멸자 (0) | 2019.03.31 |