Section 39.6: 기본 (base) 클래스의 생성자 호출하기
기본 (base) 클래스의 생성자는 파생 (derived) 클래스의 생성자가 불리기 전에 호출된다. 예를 들어, 만약 Mammal
클래스가 Animal
클래스를 확장 (extend) 한다면, Mammal
클래스의 인스턴스 생성 시 Animal
클래스의 생성자에 기술된 코드들이 먼저 실행된다.
만약 파생 클래스가 기본 클래스의 어느 생성자를 불러야 하는지 명시적으로 기술해 놓지 않았다면, 컴파일러는 기본적으로 파라미터가 없는 생성자를 부르는 것으로 간주한다.
public class Animal {
public Animal() {
Console.WriteLine("An unknown animal gets born.");
}
public Animal(string name) {
Console.WriteLine(name + " gets born");
}
}
public class Mammal: Animal {
public Mammal(string name) {
Console.WriteLine(name + " is a mammal.");
}
}
이 경우에, Mammal
클래스의 인스턴스를 new Mammal("George the Cat")
코드를 통해 생성한다면 다음과 같은 결과가 출력될 것이다.
An unknown animal gets born.
George the Cat is a mammal.
기본 클래스의 다른 생성자를 호출하고자 한다면 생성자의 서명 (signature) 부분과 본문 (body) 부분 사이에 : base(args)
구문을 기술하면 된다:
public class Mammal : Animal
{
public Mammal(string name) : base(name)
{
Console.WriteLine(name + " is a mammal.");
}
}
이제 new Mammal("George the Cat")
코드 실행 시 다음과 같은 결과가 출력될 것이다:
George the Cat gets born.
George the Cat is a mammal.
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
39.8: Static 생성자에서의 예외 발생시의 동작 (0) | 2022.03.23 |
---|---|
39.7: 파생된 클래스들의 종료자 (Finalizer) 호출 (0) | 2022.03.15 |
39.5: 생성자에서 다른 생성자 호출하기 (0) | 2022.03.14 |
39.4: Static 생성자 강제 호출하기 (0) | 2022.02.23 |
39.3: 기본 생성자 (0) | 2022.02.23 |