C#

[C#]base 키워드

DevStory 2022. 6. 5.

base 키워드

파생 클래스(혹은 자식 클래스)에서 기본 클래스(혹은 부모 클래스)의 생성자, 필드, 메서드를 접근해야 하는 경우 base 키워드를 사용하여 접근할 수 있습니다.

 

base 키워드는 메서드, 프로퍼티, 생성자 내에서만 사용할 수 있으며, static으로 선언된 정적 메서드에서는 사용할 수 없습니다. base 키워드는 기본 클래스와 파생 클래스에 동일한 이름의 필드가 존재하는 경우 유용하게 사용할 수 있습니다. 


base 키워드의 유용성

  • 기본 클래스와 파생 클래스에 동일한 이름의 필드가 존재하는 경우 기본 클래스의 필드를 접근하는지 파생 클래스의 필드를 접근하는지 구분할 수 있습니다.
  • 부모 클래스에서 작성한 소스코드를 복제할 필요가 없습니다.

기본 클래스의 필드 및 메서드 접근

다음 예제는 파생 클래스에서 기본 클래스의 필드와 메서드를 접근하는 간단한 예제입니다.

class ParentClass
{
  public string strValue = "Hello";

  public void ParentMethod()
  {
    Console.WriteLine("부모 클래스의 ParentMethod() 메서드 호출");
  }
}

class ChildClass : ParentClass
{
  public void ChildMethod()
  {
    Console.WriteLine("자식 클래스의 ChildMethod() 메서드 호출");
    Console.WriteLine("부모 클래스의 strValue 필드의 값: " + base.strValue);
    base.ParentMethod();
  }
}

class Program
{
  static void Main(string[] args)
  {
    ChildClass childObj = new ChildClass();
    childObj.ChildMethod();
  }
}

실행 결과

자식 클래스의 ChildMethod() 메서드 호출
부모 클래스의 strValue 필드의 값: Hello
부모 클래스의 ParentMethod() 메서드 호출

기본 클래스의 생성자 접근

다음 예제는 자식 클래스에서 부모 클래스의 생성자를 호출합니다.

 

자식 클래스의 생성자 뒤에 콜론(:)과 base()를 사용하여 부모 클래스의 생성자를 호출할 수 있으며, 부모 클래스의 생성자 오버로딩이 존재하는 경우 base()에 매개변수를 전달할 수 있습니다.

class ParentClass
{
  public ParentClass()
  {
    Console.WriteLine("ParentClass 클래스의 생성자");
  }

  public ParentClass(string strValue)
  {
    Console.WriteLine("ParentClass 클래스의 생성자");
    Console.WriteLine("strValue의 값: " + strValue);
  }
}

class ChildClass : ParentClass
{
  public ChildClass() : base()
  {
    Console.WriteLine("ChildClass 클래스의 생성자");
  }

  public ChildClass(string strValue) : base(strValue)
  {
  }
}

class Program
{
  static void Main(string[] args)
  {
    ChildClass childObj1 = new ChildClass();
    ChildClass childObj2 = new ChildClass("Hello");
  }
}

실행 결과

ParentClass 클래스의 생성자
ChildClass 클래스의 생성자
ParentClass 클래스의 생성자
strValue의 값: Hello

정리

  • base 키워드는 파생 클래스에서 기본 클래스의 생성자, 필드, 메서드를 접근하기 위해 사용되는 키워드입니다.
  • base 키워드는 정적 메서드에서 사용할 수 없습니다.
반응형

'C#' 카테고리의 다른 글

[C#]스레드 상태 확인  (0) 2022.06.06
[C#]파일 존재 여부 확인  (0) 2022.06.06
[C#]잠금 및 Lock 키워드  (0) 2022.06.05
[C#]스레드 동기화(Thread Synchronization)  (0) 2022.06.05
[C#]지역 함수(Local Function)  (0) 2022.05.29

댓글