본문 바로가기

C#

오버라이딩과 다형성

다형성 Polymorphism

객체지향 프로그래밍에서 다형성(polymorphism)은 객체가 여러 형태를 가질 수 있음을 의미한다.

다형성은 원래 하위 형식 다형성(subtype olymorphism)의 준말이다. 다시 말해, 자신으로부터 상속받아 만들어진 파생클래스를 통해 다형성을 실천한다는 것이다.

 

오버라이딩 Overriding

오버라이딩이란 상위 클래스에 선언되어 있는 메소드를 하위 클래스에서 구현내용을 재정의 하여 사용하는 것이다.

메소드를 오버라이딩하기 위해서는 오버라이딩을 할 메소드가 virtual 키워드로 한정되어 있어야 한다.

그리고 오버라이딩을 하는 측(하위 클래스)에서 기반 클래스에 선언 되어 있던 메소드를 재정의 하고 있음을 컴파일러에게 알려야 하므로 override 키워드를 사용해야 한다.

 

1. 기반 클래스에서 재정의 될 메소드에 virtual 키워드 추가

class ArmorSuite
    {
        public virtual void Initialize()
        {
            Console.WriteLine("Armored");
        }
    }

2. 하위 클래스에 재정의 할 메소드에 override 재정의 키워드 추가

 class IronMan : ArmorSuite
    {
        public override void Initialize()
        {
            base.Initialize();
            Console.WriteLine("RightAttack");
        }
    }
    
 class Warmachine : ArmorSuite
    {
        public override void Initialize()
        {
            base.Initialize();
            Console.WriteLine("LeftAttack");
        }
    }

3. 실행

static void Main(string[] args)
        {
            ArmorSuite armorSuite = new ArmorSuite();
            armorSuite.Initialize();
            Console.WriteLine("");

            IronMan ironMan = new IronMan();
            ironMan.Initialize();
            Console.WriteLine("");

            Warmachine warmachine = new Warmachine();
            warmachine.Initialize(); 
        }

4. 결과

 

 

 

참조: 이것이 C#이다.