S_pot

C#_ 추상클래스: 일반호출, 배열을 통한 호출, List를 통한 호출 본문

C#

C#_ 추상클래스: 일반호출, 배열을 통한 호출, List를 통한 호출

S_pot 2021. 6. 3. 17:09
namespace _210603_010
{
    abstract class Musician
    {
        public abstract void greet();
    }
    class Singer : Musician
    {
        public override void greet()
        {
            Console.WriteLine("안녕하세요 저는 싱어입니다.");
        }
    }
    class Drum : Musician
    {
        public override void greet()
        {
            Console.WriteLine("안녕하세요 저는 드러머입니다.");
        }
    }
    class Bell : Musician
    {
        public override void greet()
        {
            Console.WriteLine("안녕하세요 저는 벨 연주자입니다.");
        }
    }

    class Piano : Musician
    {
        public override void greet()
        {
            Console.WriteLine("안녕하세요 저는 벨 연주자입니다.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //Musician M = new Musician();
            Singer S = new Singer();
            Drum   D = new Drum();
            Bell   B = new Bell();
            Piano  P = new Piano();

            // 일반적인 greet() 메서드 호출
            S.greet();
            D.greet();
            B.greet();
            P.greet();

            Console.WriteLine("---------------------------------------------");

            // 배열을 통한 greet() 메서드 호출
            Musician[] M = new Musician[] { S, D, B, P } ;

            foreach (var Temp in M)
            {
                Temp.greet();
            }

            Console.WriteLine("----------------------------------------------");

            // List를 통한 greet() 메서드 호출
            List<Musician> L = new List<Musician>() { S, D, B, P };

            foreach(var Temp in L)
            {
                Temp.greet();
            }    


        }
    }
}