2012-11-22 2 views
0

이 작업을 수행하는 적절한 방법을 찾지 못했습니다. Class AaClass A에서 상속 받았다고 가정 해 보겠습니다. 내 생각은 금주 모임에 오버라이드 (override) 두 가지 속성을 가지고, 그래서 예를 호출Java에서 필수 필드 무시

Class A { 
    String attr; 

    public void publicMethod(){ 
     .... 
     callMethod2(); 
     .... 
    } 

    protected method2(){ 
     .... 
     whatever = attr; 
    } 
} 

Class Aa extends A{ 
    //mandatory override? 
    attr 
} 

이 기능 A.에서 호출 될 때 나는 A,에서 함수에서 이러한 속성을 사용할 수

Aa test = new Aa(); 
test.publicMethod(); 

나는 단지 "필수로 만들 수는 없다"고 생각하고 작동 할 수 있다고 생각하지만,이 속성을 어떻게 든 설정해야한다는 것은 직관적이지 않습니다. 해결 방법은 없습니까? 나는 아마 이것을 강조하고있다.

답변

2

추상 키워드가 필요합니다. 그러나 속성을 사용하는 것이 아니라 메서드 만 사용합니다 (어쨌든이를 수행하는 적절한 방법 임).

public abstract class AbstractBaseClass { 

    public void publicMethod(){ 
     // .... 
     String value = getAttribute(); 
     // .... 
    } 

    protected abstract String getAttribute(); 
} 

public class ConcreteClass extends AbstractBaseClass { 
    protected String getAttribute() { 
     // Lazy loading attr 
     if (attr==null) attr = "default value"; 
     return attr; 
    } 

    protected String attr; 
} 
+0

나는 비슷한 것을하고 있었지만 이것은 꽤 깨끗하게 보입니다. – dgmora