하위 클래스가 선언하지 않고 사용할 수 있도록 기본 클래스에서 생성자를 선언하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/8869503

문제

하위 클래스가 부모의 생성자를 사용하고 싶습니다.그러나 그것이 작동하기 위해서는 항상 하위 클래스에서 다시 정의해야 할 것 같습니다. 라코 디스

그래서 부모 클래스에서 생성자를 제대로 선언하지 않았는지, 아니면 직접 생성자 상속이 전혀 없는지 궁금합니다.

도움이 되었습니까?

해결책

당신은 잘못한 것이 없습니다.

C #에서 인스턴스 생성자는 상속되지 않으므로 상속 유형에서 선언하고 기본 생성자에 연결하는 것이 올바른 방법입니다.

사양 §1.6.7.1에서 : <인용구>

다른 멤버와 달리 인스턴스 생성자는 상속되지 않으며 클래스에는 클래스에서 실제로 선언 된 것 외에 다른 인스턴스 생성자가 없습니다.클래스에 인스턴스 생성자가 제공되지 않으면 매개 변수가없는 빈 생성자가 자동으로 제공됩니다.

다른 팁

이 질문이 귀하의 질문에 직접 답변하지 않는다는 것을 알고 있습니다.그러나 대부분의 생성자가 단순히 이전 생성자에 새 매개 변수를 도입하는 경우 선택적 인수 (C # 4에서 도입 됨)를 활용하여 정의해야하는 생성자 수를 줄일 수 있습니다.

예 : 라코 디스

위는 다음과 같이 줄일 수 있습니다. 라코 디스

그리고 여전히 당신이 어떤 수의 인자로도 BaseClassDerivedClass를 초기화 할 수 있습니다 : 라코 디스

생성자는 기본 클래스에서 파생으로 상속되지 않습니다.각 생성자는 먼저 기본 클래스 ctor를 호출해야합니다.컴파일러는 매개 변수없는 ctor를 호출하는 방법 만 알고 있습니다.베이스 클래스에 그러한 ctor가 없으면 수동으로 호출해야합니다.

<인용구>

그래서 생성자를 올바르게 선언하고 있지 않은지 궁금합니다. 어리석은 것처럼 보이기 때문입니다.

기본 클래스에 기본 생성자가 없으면 자식 클래스에서 다시 선언해야합니다.이것이 .NET에서 OOP가 작동하는 방식입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top