상속자에 따라 다른 인수를받는 추상 함수 만들기

Jasin Ali |

나는 좋은 해결 방법을 생각할 수없는 문제를 우연히 발견했습니다.

내 프로그램에는 일부 이벤트에 대해 다시 초기화해야하는 개체가 있습니다. 다시 초기화해야하는 개체는 추상 클래스의 하위 클래스입니다.

그리고 앞으로 나아가는 것이 나쁜 방법 인 것처럼 보이지만 추상 클래스에 추상 reinitlize 함수를 사용하고 모든 하위 클래스가 함수를 구현하도록하기로 결정했습니다. 그러나 이제 각 하위 클래스가 생성자에서 다른 인수를 취하는 문제가 있습니다.

내가 가진 최소한의 예는 다음과 같습니다.

abstract class Base
{
    public abstract void Init(/* Some parameter */);
}

class SubA : Base
{
    public SubA(int a)
    {
        Init();
    }

    public override void Init(int a)
    {
        //do stuff with int
    }
}

class SubB : Base
{
    public SubB(string b)
    {
        Init();
    }

    public override void Init(string b)
    {
        //do stuff with string
    }
}

class Program
{
    static void Main(string[] args)
    {
        List<Base> stuff = new List<Base>()
        {
            new SubA(65),
            new SubB("B")
        };

        foreach (var s in stuff)
        {
            s.Init();
        }
    }
}`

이 솔루션에 코드 냄새가 있다고 생각하므로이 시나리오를 피하는 제안을 환영합니다. 도움이 필요한 추가 정보가 있으면 알려주십시오.

Michał Turczyn

솔루션은 간단 합니다. 전용 필드에 특정 변수를 선언 하고 해당 필드를 매개 변수없는 Init 메서드로 사용 하면됩니다.

class SubA : Base
{
    private int _a;
    public SubA(int a)
    {
        _a = a;
        Init();
    }

    public override void Init()
    {
        //do stuff with int _a
    }
}

class SubB : Base
{
    private string _b;
    public SubB(string b)
    {
        _b = b;
        Init();
    }

    public override void Init()
    {
        //do stuff with string _b
    }
}

또한 대신 클래스 인터페이스를 추상화하도록 만들 수 있으므로이를 구현하는 클래스는 다른 기본 클래스에서도 상속 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 열 R의 조건에 따라 함수 만들기

분류에서Dev

상황에 따라 다른 함수 내에서 함수 실행

분류에서Dev

크기에 따라 벡터를 다른 벡터로 채우는 템플릿 함수 만들기

분류에서Dev

추상 클래스에서 상속하여 다른 추상 클래스를 만들 때 모든 가상 함수를 다시 선언해야합니까?

분류에서Dev

템플릿 유형에 따라 값 상수 만들기

분류에서Dev

조건문에 따라 다른 함수를 사용하여 여러 새 열 만들기

분류에서Dev

다른 셀의 조건부 서식에 따라 필수 셀 만들기 2 부

분류에서Dev

다른 요인에 따라 한 요인의 빈도를 가져 오는 사용자 지정 함수를 어떻게 만들 수 있습니까?

분류에서Dev

상태를 변경하기 위해 다른 함수 내부에 함수 만들기

분류에서Dev

최상위 상수에 따라 다른 매개 변수로 함수를 오버로드 할 수 있습니까?

분류에서Dev

"추상 인라인 메서드에서 클로저를 만들 수 없습니다"는 무슨 뜻입니까?

분류에서Dev

템플릿 인수 유형 조건에 따라 다른 튜플 유형을 반환하는 템플릿 함수 만들기

분류에서Dev

시간에 따라 실행되는 함수 만들기

분류에서Dev

매개 변수에 전달 된 유형에 따라 다른 코드를 실행하는 switch 문을 사용하여 일반 함수 만들기

분류에서Dev

rxjava는 조건에 따라 객체를 수집하고 다른 관찰 대상을 기다립니다.

분류에서Dev

Matplotlib의 y 값에 따라 선 그래프의 일부를 다른 색상으로 만들기

분류에서Dev

일정에 따라 Mac을 자동으로 잠자기 상태로 만들 수 있습니까?

분류에서Dev

Swift의 UIViewController에서 상속되는 클래스의 다른 클래스에 따라 변수를 초기화 할 수 있습니까?

분류에서Dev

SQL의 조건에 따라 2 개의 다른 필드 데이터를 포함하는 필드 만들기

분류에서Dev

CPP에서 추상 인수를받는 함수 커리

분류에서Dev

로그인 상태에 따라 다른 포함 파일 표시

분류에서Dev

자바 스크립트 : 임의의 수의 인수를 받고 수에 따라 평균을 취하는 함수를 만드는 방법. 인수?

분류에서Dev

두 문자열을 입력 인수로 받아들이는 find_mismatch라는 함수를 작성합니다.

분류에서Dev

다른 함수에서 값의 인수를받는 함수를 만드는 방법은 무엇입니까?

분류에서Dev

다른 함수의 속성과 메서드를 상속하는 Javascript에서 함수를 어떻게 만들 수 있습니까?

분류에서Dev

다른 텍스트 상자의 수에 따라 마지막 문자를 바꾸는 방법

분류에서Dev

다른 변수에 따라 그룹별로 R에서 날짜 시퀀스 만들기

분류에서Dev

R에서 두 개의 다른 범주 형 변수에 따라 여러 플롯 만들기

분류에서Dev

다른 열의 불연속 변수에 따라 matplotlib 산점도 마커 또는 색상을 만드는 방법이 있습니까?

Related 관련 기사

  1. 1

    다른 열 R의 조건에 따라 함수 만들기

  2. 2

    상황에 따라 다른 함수 내에서 함수 실행

  3. 3

    크기에 따라 벡터를 다른 벡터로 채우는 템플릿 함수 만들기

  4. 4

    추상 클래스에서 상속하여 다른 추상 클래스를 만들 때 모든 가상 함수를 다시 선언해야합니까?

  5. 5

    템플릿 유형에 따라 값 상수 만들기

  6. 6

    조건문에 따라 다른 함수를 사용하여 여러 새 열 만들기

  7. 7

    다른 셀의 조건부 서식에 따라 필수 셀 만들기 2 부

  8. 8

    다른 요인에 따라 한 요인의 빈도를 가져 오는 사용자 지정 함수를 어떻게 만들 수 있습니까?

  9. 9

    상태를 변경하기 위해 다른 함수 내부에 함수 만들기

  10. 10

    최상위 상수에 따라 다른 매개 변수로 함수를 오버로드 할 수 있습니까?

  11. 11

    "추상 인라인 메서드에서 클로저를 만들 수 없습니다"는 무슨 뜻입니까?

  12. 12

    템플릿 인수 유형 조건에 따라 다른 튜플 유형을 반환하는 템플릿 함수 만들기

  13. 13

    시간에 따라 실행되는 함수 만들기

  14. 14

    매개 변수에 전달 된 유형에 따라 다른 코드를 실행하는 switch 문을 사용하여 일반 함수 만들기

  15. 15

    rxjava는 조건에 따라 객체를 수집하고 다른 관찰 대상을 기다립니다.

  16. 16

    Matplotlib의 y 값에 따라 선 그래프의 일부를 다른 색상으로 만들기

  17. 17

    일정에 따라 Mac을 자동으로 잠자기 상태로 만들 수 있습니까?

  18. 18

    Swift의 UIViewController에서 상속되는 클래스의 다른 클래스에 따라 변수를 초기화 할 수 있습니까?

  19. 19

    SQL의 조건에 따라 2 개의 다른 필드 데이터를 포함하는 필드 만들기

  20. 20

    CPP에서 추상 인수를받는 함수 커리

  21. 21

    로그인 상태에 따라 다른 포함 파일 표시

  22. 22

    자바 스크립트 : 임의의 수의 인수를 받고 수에 따라 평균을 취하는 함수를 만드는 방법. 인수?

  23. 23

    두 문자열을 입력 인수로 받아들이는 find_mismatch라는 함수를 작성합니다.

  24. 24

    다른 함수에서 값의 인수를받는 함수를 만드는 방법은 무엇입니까?

  25. 25

    다른 함수의 속성과 메서드를 상속하는 Javascript에서 함수를 어떻게 만들 수 있습니까?

  26. 26

    다른 텍스트 상자의 수에 따라 마지막 문자를 바꾸는 방법

  27. 27

    다른 변수에 따라 그룹별로 R에서 날짜 시퀀스 만들기

  28. 28

    R에서 두 개의 다른 범주 형 변수에 따라 여러 플롯 만들기

  29. 29

    다른 열의 불연속 변수에 따라 matplotlib 산점도 마커 또는 색상을 만드는 방법이 있습니까?

뜨겁다태그

보관