0
실제 설정은 약간 복잡하므로 더 일반적인 예를 공식화하겠습니다. 다음 클래스 (사용하여 Java의 구문을) 고려 : operationOnSetsOfNumbers()가 아니기 때문에 물론부모 생성자를 부모 내부에서 호출 할 수 있습니까?
Set someSet = new SetOfNumbers(...);
System.out.println(someSet.subset(...).operationOnSetsOfNumbers());
, 이것은 컴파일되지 않습니다 : 나는 다음과 같은 코드를 작성할 수 있도록하고 싶습니다
class Set
{
...
Set subSet(Element[] elementList)
{
...
}
}
class SetOfNumbers extends Set
{
...
int operationOnSetsOfNumbers()
{
...
}
}
Set의 멤버 한 가지 해결책은 각 자식 클래스에 대해 subSet 메서드를 개별적으로 구현하여 매번 적절한 반환 형식을 지정하는 것입니다. 그러나 subSet 구현이 복잡하고 많은 자식이있는 경우에는 분명히 우아하지 않습니다. 어떻게 든 세트의 멤버 함수 내부에서 Set의 임의의 자식을 참조하는 방법을 원하지만이 방법은 생각할 수 없습니다. 어떤 아이디어? 다음과 같이
다형성을 활용하고 서브 세트의 반환 값을 올바른 유형으로 캐스트 할 수 없습니까? – gareththegeek
흠 ... 나는이 예제에서 당신이 할 수 있다고 생각합니다. 내 실제 코드에서 이것은 예외를 던지고 있지만 내 질문에 회피하려고 다른 합병증이 발생했습니다. 조사 할게. –
간단한 대답은 기본 클래스에서 operationOnSetsOfNumbers 추상을 만들어 각각의 파생 클래스에 구현하는 것이라고 가정합니다. Java를 사용하면 필요한 경우 구현 메소드에서보다 구체적인 리턴 유형을 가질 수 있습니다. 생성자에서 너무 많은 일을하지 않도록주의 할 수 있습니까? 다른 방법 (특히 같은 클래스의 비 최종 방법)을 호출하면 고통의 세계로 이어집니다. 당신은 생성자 대신에 factory 메소드를 사용하는 것을 고려할 수 있습니까? – Stormcloud