반응형
아래 글은 C# 메서드 오버라이드 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 44단원 메서드 오버라이드 592 ~ 599페이지
- 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 44. 메서드 오버라이드]
- 닷넷코리아 (https://www.dotnetkorea.com/)
https://www.youtube.com/watch?v=UubMVC3EmyQ
✳ 메서드(Method) 오버라이드
- 오버라이드(재정의, 다시 정의), Override, Overriding
- 부모클래스의 메서드를 자식 클래스에서 재정의
- 가상 메서드
- virtual과 override - 오버로드(다중 정의, 여러 번 정의), Overload, Overloading
- 하나의 클래스에 시그니처가 다른 동일 이름의 메서드 여러번 정의
✳ 예제코드
namespace OverrideDemo
{
class Parent
{
protected void Say() => System.Console.WriteLine("부모_안녕하세요.");
protected void Run() => System.Console.WriteLine("부모_달리다.");
public virtual void Walk() => System.Console.WriteLine("부모_걷다.");
public virtual void Work() => System.Console.WriteLine("부모_프로그래머");
}
class Child : Parent
{
// public void Say() => System.Console.WriteLine("자식_안녕하세요.");
public new void Say() => System.Console.WriteLine("자식_안녕하세요.");
public new void Run() => System.Console.WriteLine("자식_달리다.");
public override void Walk() => base.Walk(); // 관대한 부모의 의견을 따르다.
public override void Work() => System.Console.WriteLine("자식_프로게이머");
}
class OverrideDemo
{
static void Main()
{
Child child = new Child();
child.Say(); // 자식이 예의가 없는 경우: x -> x
child.Run(); // 자식이 예의가 있는 경우: x -> new
child.Walk(); // 부모도 관대하고 자식도 예의가 있는 경우: virtual -> override
child.Work(); // 부모도 관대하고 자식도 예의가 있는 경우: virtual -> override
}
}
}
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 개체(Object)와 개체지향프로그래밍 (0) | 2021.06.11 |
---|---|
C# 특성(Attribute)과 리플렉션(Reflection) 맛보기 (0) | 2021.06.10 |
C# 상속(Inherits)으로 클래스 확장하기 (0) | 2021.06.08 |
C# 인덱서(Indexer)와 반복기(Iterator) (0) | 2021.06.07 |
C# 메서드(Method)와 매개변수(Parameter) (0) | 2021.06.06 |