@ pst 님의 의견은이 해결책으로 이어졌습니다.
이것은 변수로 수행 할 수 없습니다. 그러나 추상 클래스는 특정 방법을 구현하도록 요구할 수 있습니다 :이 방법은 설정하거나 변수를 반환하는 abstract
기능을 선언에서 해당 값
를 반환 할 수, 당신은 제대로 구현하는 서브 클래스를 강제 할 수 있습니다.
다음으로 함수는 외부 클래스의 모든 단일 하위 클래스에 의해 호출되어야합니다. 이는 외부 클래스의 어딘가에서 수행되어야 함을 의미합니다.
참고 :이 서브 클래스 super
호출에 대해 걱정할 필요없이 외부 클래스의 인수 없음의 생성자에서 수행 할 수있는 생성자는 명시 적으로 슈퍼 클래스 생성자를 호출하지 않는 경우, 자바 컴파일러는 자동으로 전화를 삽입 슈퍼 클래스의 인자없는 생성자. 수퍼 클래스에 인수가없는 생성자가 없으면 컴파일 타임 오류가 발생합니다. Object에는 이러한 생성자가 있으므로 Object가 유일한 수퍼 클래스 인 경우 아무 문제가 없습니다.그 기준
(Java docs: Super)
,이 용액을 잡아되며 올바르게
힘 변수는만큼 설정할 수 중 하나
- 다른 생성자 (수퍼에 따라서 슈퍼 수 생성되지
- 슈퍼 클래스의 다른 모든 생성자는 여전히 기본 생성자를 내부적으로 호출합니다.
코드 :
슈퍼 클래스 :
public abstract class SuperClass {
// Variable all inner classes must set
static int myVar = 0;
public SuperClass() {
myVar = giveValue();
}
public abstract int giveValue();
}
서브 클래스 :
public class SubClass extends SuperClass {
@Override
public int giveValue() {
return 5; // individual value for the subclass
}
}
이것은 변수와 함께 할 수 없습니다. 그러나 추상 클래스는 특정 메서드가 구현되도록 요구할 수 있습니다.이 메서드는 해당 값을 반환 할 수 있습니다. –
감사! 나는 그 경로를 내려가려고 시도 했었고 어떻게 추상 함수를 호출해야하는지에 매달렸다. 공백이 있고 인자없는 생성자를 잊어 버렸고 추상 생성자와 같은 것을 시도하고있었습니다. –