티스토리 뷰

반응형

목차

     


    C# 상속 개념 쉽게 이해하기

     

    프로그래밍에서의 상속 개념은 부모 클래스의 속성들을 자식 클래스에서 받을 수 있는 것을 의미합니다. 메서드나 변수들 말이죠. 상속을 해주는 클래스가 부모 클래스이고, 상속을 받는 클래스를 자식 클래스라고 명칭 합니다. 게임을 예로 들면 쉬울 것 같네요. 롤 게임으로 상속에 대해서 간단한 예제를 구현해보도록 하겠습니다.

     

    가렌 vs 애니 구도로 만들어보도록 하죠.

     

     

     

     

    부모 Class 만들기

     

    먼저 부모 클래스를 만들어보겠습니다. 가렌과 애니는 모두 챔피언이죠? 부모 클래스로 챔피언 클래스를 만들어주고, 챔피언들의 공통적인 부분들을 구현해줍니다. 대표적인 속성으로는 챔피언의 이름, 스킨, 소속팀 정도가 되겠고 챔피언의 행동으로는 크게 이동, 공격, 스킬 정도로 나누고 실 실행될 때마다 로그를 남기도록 합니다. public 이나protected로 선언을 하면, 자식 클래스에서 상속을 받아 사용할 수 있습니다.

     

     

    public class 챔피언
    {
        public string NAME { get; set; }
        public string SKIN { get; set; }
        public string TEAM { get; set; }
    
        public void 이동()
        {
            Console.WriteLine(TEAM + "팀 " + NAME + " 챔피언이 이동합니다.");
        }
    
        public void 공격()
        {
            Console.WriteLine(TEAM + "팀 " + NAME + " 챔피언이 공격합니다.");
        }
    
        public void 스킬()
        {
            Console.WriteLine(TEAM + "팀 " + NAME + " 챔피언이 스킬을 사용합니다.");
        }
    }

     

     

     

     

    자식 클래스 만들기

     

    다음은 자식 클래스 입니다. 가렌과 애니 클래스를 만들어 서로 싸우는 모습을 연출해보도록 하겠습니다. 자식 클래스에 콜론(:)을 붙이고 부모 클래스를 입력해주면 상속을 받을 수 있습니다. 참고로 상속은 클래스마다 한 개의 부모 클래스만 상속받을 수 있습니다.

     

     

    public class 가렌 : 챔피언
    {
        public string SKIN1 = "대장군";
    
        public 가렌()
        {
            base.NAME = "가렌";
            base.SKIN = SKIN1;
        }
    }
    
    public class 애니 : 챔피언
    {
        public string SKIN1 = "티버";
    
        public 애니()
        {
            base.NAME = "애니";
            base.SKIN = SKIN1;
        }
    }

     

    자식 클래스가 생성될 때, 부모 클래스의 NAME과 SKIN을 설정하도록 해줍니다. 자식 클래스에서 부모 클래스의 속성 값들을 디렉트로 사용하려면 base 키워드를 사용하면 됩니다.

     

    ex) 가렌 클래스에서 base.NAME 값을 설정하면 가렌이 상속받은 챔피언 클래스의 NAME 값이 변경됩니다.

     

     

     

     

    상속 사용하기

     

    이제 가렌과 애니를 서로 싸우도록 한번 구현을 해야 합니다. 게임이 시작되면, 어느 챔피언이 어느 팀에 소속되어있는지 알려주고 이동, 공격, 스킬을 사용하도록 구현해줍니다.

     

        class Program
        {
            static void Main(string[] args)
            {
                가렌 a = new 가렌();
                애니 b = new 애니();
    
                Console.WriteLine("소환사의 협곡에 오신것을 환영합니다.");
                Console.WriteLine(Environment.NewLine);
                
                Console.WriteLine(a.NAME + " : " + a.TEAM);
                Console.WriteLine(b.NAME + " : " + a.TEAM);
                Console.WriteLine(Environment.NewLine);
    
                a.이동();
                b.이동();
                Console.WriteLine(Environment.NewLine);
    
                a.공격();
                b.공격();
                Console.WriteLine(Environment.NewLine);
    
                a.스킬();
                b.스킬();
                Console.WriteLine(Environment.NewLine);
            }
        }

     

    구현이 끝났으니 실행을 해보도록 하겠습니다. 어떻게 나올지 예상이 되시나요?

     

     

     

    자식클래스에서 설정한 부모 클래스의 값이 잘 바뀌는 것을 확인할 수 있습니다.

     

     

     

     

    마무리

     

    이상 C#에서의 상속 개념에 대해서 알아보았습니다.

     

     

    반응형

    '프로그래밍 & DB > C#' 카테고리의 다른 글

    C# - List 배열을 n개의 배열로 나누는 방법  (0) 2022.06.23