반응형
매개 변수가있는 기본 클래스 생성자를 통한 상속 [중복]
이 질문에 이미 답변이 있습니다.
- C # 상속 및 기본 생성자 3 답변
간단한 코드 :
class foo
{
private int a;
private int b;
public foo(int x, int y)
{
a = x;
b = y;
}
}
class bar : foo
{
private int c;
public bar(int a, int b) => c = a * b;
}
Visual Studio는 bar
생성자 에 대해 불평합니다 .
오류 CS7036 필수 형식 매개 변수
x
에 해당하는 인수가 없습니다foo.foo(int, int)
.
뭐?
문제는 기본 클래스 foo
에 매개 변수없는 생성자가 없다는 것입니다. 따라서 파생 클래스 생성자의 매개 변수를 사용하여 기본 클래스의 생성자를 호출해야합니다.
public bar(int a, int b) : base(a, b)
{
c = a * b;
}
내가 틀릴 수도 있지만 foo에서 상속하기 때문에 기본 생성자를 호출해야한다고 생각합니다. (int, int)를 요구하도록 foo 생성자를 명시 적으로 정의 했으므로 이제이를 체인으로 전달해야합니다.
public bar(int a, int b) : base(a, b)
{
c = a * b;
}
이것은 foo의 변수를 먼저 초기화 한 다음 bar에서 사용할 수 있습니다. 또한 혼동을 피하기 위해 매개 변수 이름을 인스턴스 변수와 똑같이 지정하지 않는 것이 좋습니다. 대신 p_a 또는 다른 것을 시도하여 실수로 잘못된 변수를 처리하지 않도록하십시오.
참고 URL : https://stackoverflow.com/questions/30696006/inheritance-with-base-class-constructor-with-parameters
반응형
'program story' 카테고리의 다른 글
`staticmethod` 및`abc.abstractmethod` : 혼합 될까요? (0) | 2020.09.24 |
---|---|
Composer에는 로컬 패키지가 필요합니다. (0) | 2020.09.24 |
프라 미스 함수에 매개 변수를 전달하는 방법 (0) | 2020.09.24 |
IRB에서 .rb 파일을 실행하는 방법은 무엇입니까? (0) | 2020.09.24 |
git 하위 모듈을 제거하는 현재 방법은 무엇입니까? (0) | 2020.09.24 |