자료 관리

C# 클래스 상속

noc777 2024. 9. 27. 10:55

C# 클래스엔 상속이라는 개념이 있습니다. 

비슷한 개념의 클래스를 묶는 것을 말합니다.

저희는  보통 상속시키는 클래스를 부모 클래스라 부르고 

상속받는 클래스를 자식 클래스라 부릅니다.

 

 public class Monster
 {

     public int level;
     public string name;
     public int hp;
     public int def;
     public int atk;
     
    public Monster()
    {
    	Console.WriteLine("Im respawn!");
    }

     
 }

 public class Minion : Monster
 {

     public Minion() 
     {

     }

 }

 public class VoidInsec : Monster
 {

     public VoidInsec() 
     {

     }

 }
 public class CannonMinion : Monster
 {

     public CannonMinion() 
     {

     }

 }

 

자식클래스로 설정하기 위해서는 부모 클래스의 이름을 자식 클래스의 뒤에 붙여줍니다.

이렇게 되었을 때 자식 클래스는 부모의 변수와 메소드를 공유받게 되며

사용할 때 Minion minion = new Minion(); 처럼 선언해주면 Monster의 실행부 또한 같이 실행됩니다.

 

다음은 base 키워드 에 관한 이야기입니다. base 키워드는 자식 클래스가 부모 클래스의 멤버에

접근이 가능한 키워드입니다.  자식 클래스의 메소드에 :base 를 붙여주면 권한을 받게됩니다.

 

 

public class Monster
{

    public int level { get; set; }
    public string name { get; set; }
    public int hp { get; set; }
    public int def { get; set; }
    public int atk { get; set; }


    //몬스터 정보
    public Monster(int level, string name, int hp, int def, int atk)
    {

        this.level = level;
        this.name = name;
        this.hp = hp;
        this.def = def;
        this.atk = atk;
    }
}


public class Minion : Monster
 {

     public Minion() : base(2, "미니언", 15, 10, 5)
     {

     }

 }

위와 같이 부모 클래스인 Monster 와 자식 클래스인 Minion 을 설정하였습니다. 

 

Monster는 변수의 초기값을 따로 지정해주지 않았지만 생성자를 통해 변수를 입력받는 형태입니다.

Minion을 보시면 base의 소괄호에 매개변수가 입력되어 있습니다.

 

고유의 값을 base의 매개변수로 넣어둔다면 Minion 클래스가 선언될 때  이 매개변수들이 거슬러 올라가 

Monster의 생성자가 실행되기전에 생성자의 매개변수로 들어가게 됩니다.

 

그리고 생성자의 기능에 따라 변수에 Minion의 고유값이 들어가게 됩니다.

public class Minion : Monster
{

    public Minion() : base(2, "미니언", 15, 10, 5)
    {

    }

}

public class VoidInsec : Monster
{

    public VoidInsec() : base(3, "공허충", 10, 10, 9)
    {

    }

}
public class CannonMinion : Monster
{

    public CannonMinion() : base(5, "대포미니언", 25, 10, 8)
    {

    }

}

따라서 자식 클래스를 여럿 두게 된다면 각각 호출될 때마다 고유의 값을 가지고 갈 수 있게 됩니다.

'자료 관리' 카테고리의 다른 글

C# 코딩 스탠다드  (0) 2024.10.02
객체와 클래스  (0) 2024.09.27
리스트 구조  (0) 2024.09.25
클래스를 사용하여 리스트에 여러 개의 변수를 넣는 방법  (0) 2024.09.25
컬렉션(C#)  (2) 2024.09.22