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/

반응형

+ Recent posts