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 |
댓글