다음과 같이 내가 추상 클래스가자바 추상 클래스 생성자 범위
:
public abstract class AbstractTestClass
{
public AbstractTestClass(String text)
{
SomeObject someObject = SomeStaticClass.getSomeObjectFromText(text);
//etc...
this.property1 = someObject.property1
//basically populate properties based off of someObject
}
}
를 그리고 구현 예 :
public class AbstractTestClassImpl
{
public AbstractTestClassImpl(String text)
{
super(text);
SomeObject someObject = SomeStaticClass.getSomeObjectFromText(text);
//do stuff with someObject that isn't done in the super constructor because it may vary per different implementations of the abstract class
}
}
을
그래서이 예제 코드 스 니펫에서 someObject가 두 번 생성되며, 한 번만 만들거나 그냥 그대로두면 궁금합니다.
분명한 해결책은 someObject
을 AbstractClass의 멤버 변수로 만드는 것이지만, someObject
이 전혀 필요하지 않은 경우도 있습니다.
public AbstractTestClass(int i, int j, char c)
{
//do stuff where someObject is not required
}
를, 그것 전혀 사용하지 때문에 의미가 someObject
회원을 가지고하지 것이다.
someObject
은 하나의 생성자에서만 사용된다고 가정하십시오.
어떻게 접근하는 것이 가장 좋을까요?
'someObject'를 항상 인스턴스 멤버로 사용하지 않더라도 인스턴스 멤버로 갖는 문제점은 무엇입니까? – chancea
그건 내 추측의 일부 야. 나는 그 좋은 연습이 그것을 할 것인지 확실하지 않다. – Rhs
반면 완전히 완전히 분리 된 두 개의 생성자가 필요하다면 클래스가 추상화되지 않은 것처럼 들릴 수도 있습니다. – chancea