C#

210525 C#_virtual, override(오버라이드), 객체지향 다향성 구현

S_pot 2021. 5. 25. 15:40

override: 상속관계의 클래스 사이에서 부모클래스의 메소드를 자식클래스가 부모의 메소드를 받아서 다른 형태로 바꾸어 사용

using System;


namespace _210525_010
{
    class Instrument
    {
        public virtual void Play()      // virtual: 부모클래스에서 자식클래스의 함수를 사용할 수 있게한다.
        {
            Console.WriteLine("연주하다.");
        }
    }

    class Piano : Instrument
    {
        public override void Play()
        {
            Console.WriteLine("따라란딴딴");
        }
    }

    class Guitar : Instrument
    {
        public override void Play()
        {
            Console.WriteLine("띠딩딩띵");
        }
    }

    class Drum : Instrument
    {
        public override void Play()
        {
            Console.WriteLine("드럼럼럼럼");
        }
    }

    class Base : Instrument
    {
        public override void Play()
        {
            Console.WriteLine("둥둥");
        }
    }


    class Program
    {
        // 객체지향 다형성 구현: override 기법
        // 오버라이딩 메서드를
        // 객체기반으로 호출하기
        // 1. 부모 클래스의 메소드에 virtual 키워드를 추가한다.
        // 2. 자식 클래스의 메소드에 override 키워드를 추가한다.
        static void Main(string[] args)
        {
            Instrument[] Orche;
            Orche = new Instrument[5];
            Orche[0] = new Instrument();
            Orche[1] = new Piano();
            Orche[2] = new Guitar();
            Orche[3] = new Drum();
            Orche[4] = new Base();

            foreach(var Temp in Orche)
            {
                Temp.Play();
            }


        }
    }
}