base(C# 참조)

base 키워드는 다음과 같이 파생 클래스에서 기본 클래스의 멤버에 액세스하는 데 사용됩니다.

  • 다른 메서드로 재정의된 기본 클래스의 메서드를 호출합니다.

  • 파생 클래스의 인스턴스를 만들 때 호출해야 하는 기본 클래스 생성자를 지정합니다.

생성자, 인스턴스 메서드 또는 인스턴스 속성 접근자에서만 기본 클래스에 액세스할 수 있습니다.

정적 메서드 내에서는 base 키워드를 사용할 수 없습니다.

액세스한 기본 클래스는 클래스 선언에 지정된 기본 클래스입니다.예를 들어 class ClassB : ClassA를 지정하면 ClassA의 기본 클래스에 상관 없이 ClassB에서 ClassA 멤버에 액세스합니다.

예제

아래 예제에서 기본 클래스인 Person과 파생 클래스인 Employee 모두에 Getinfo 메서드가 있습니다.base 키워드를 사용하면 파생 클래스에서 기본 클래스의 Getinfo 메서드를 호출할 수 있습니다.

    public class Person
    {
        protected string ssn = "444-55-6666";
        protected string name = "John L. Malgraine";

        public virtual void GetInfo()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("SSN: {0}", ssn);
        }
    }
    class Employee : Person
    {
        public string id = "ABC567EFG";
        public override void GetInfo()
        {
            // Calling the base class GetInfo method:
            base.GetInfo();
            Console.WriteLine("Employee ID: {0}", id);
        }
    }

    class TestClass
    {
        static void Main()
        {
            Employee E = new Employee();
            E.GetInfo();
        }
    }
    /*
    Output
    Name: John L. Malgraine
    SSN: 444-55-6666
    Employee ID: ABC567EFG
    */

다른 예제를 보려면 new, virtualoverride를 참조하십시오.

아래 예제에서는 파생 클래스의 인스턴스를 만들 때 기본 클래스 생성자를 지정하는 방법을 보여 줍니다.

public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
/*
Output:
in BaseClass()
in BaseClass(int i)
*/

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하십시오. 이 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.

참고 항목

참조

C# 키워드

this(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조