[C#] base 키워드


base 키워드

해당 키워드를 사용하는 클래스의 부모 클래스를 가리키는 것이다

class Fruit {
    string g_name;
    int g_grade;
    int g_price;
    
    public Fruit(string name, int grade, int price) {
        g_name = name;
        g_grade = grade;
        g_price = price;
    }
    
    public void Sell() {
        Console.WriteLine("과일 {0}을(를) {1}원에 팔았습니다.", g_name, g_price);
    }
    
    public void Info() {
        Console.WriteLine("과일 이름: {0}", g_name);
        Console.WriteLine("과일 등급: {0}등급", g_grade);
        Console.WriteLine("과일 가격: {0}원", g_price);
    }
    
    public int Price {
        get { return g_price; }
    }
    public int Grade {
        get { return g_grade; }
    }
    public string Name {
        get { return g_name; }
    }
}

위에는 Fruit 클래스가 선언되어 있다. 이를 상속한 Apple 클래스를 선언해보도록 한다.

class Apple : Fruit {
    public Apple(int grade, int price) : base("사과", grade, price) { }
    
    public void SellCustom() {
        Console.WriteLine("사과를 {0}원에 팔았습니다.", Price);
    }
    
    public void SellBase() {
        base.Sell();
    }
    
    public int Price {
        get { return 0; }
    }
}

base 키워드를 사용하는지 아나는지에 따라 어떤 클래스에 접근하는지가 달라진다.

int priceBase = base.Price; // Fruit 클래스의 Price 속성 값
int priceThis = this.Price; // Apple 클래스의 Price 속성 값 (this. 는 생략 가능합니다)

base 키워드를 사용하게 되면 부모 클래스의 것에 접근하게 되고, 쓰지 않는다면 본인 클래스의 것에 접근하게 다.