program story

매개 변수가있는 기본 클래스 생성자를 통한 상속

inputbox 2020. 9. 24. 07:49
반응형

매개 변수가있는 기본 클래스 생성자를 통한 상속 [중복]


이 질문에 이미 답변이 있습니다.

간단한 코드 :

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

반응형