본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 메서드(Method) 오버라이드

by 공부하는개미 2021. 6. 9.
반응형

 

 

아래 글은 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
        }
    }
}
반응형