2014-01-30 3 views
0

앞으로 언젠가 서브 클래 싱 될 예정인 구체적인 클래스를 작성하고 있습니다. 필드 중 하나는 상수 파일 경로로 취급되지만 하위 클래스에서 수정해야합니다. 현재 PATH_TO_FILE에 대한이 선언이 있습니다.하위 클래스의 정적 최종 상수 필드 수정

public class MyFileHandler 
{ 
    protected static final String PATH_TO_FILE = "/my/path/to/file"; 

    public void writeToFile(String s) { /* Write to PATH_TO_FILE */ } 
    public String readFromFile() { /* Read from PATH_TO_FILE */ } 
} 

어떻게하면 하위 클래스가 PATH_TO_FILE 변수를 수정할 수 있습니까? 다른 선언을 사용해야합니까?

+1

을 덮어 쓸 수 없습니다를 시도 할 수 있습니다. – Prince

+1

하드 코딩 된 정적 필드를 참조하지 않는 것이 좋습니다. 또 다른 값이 제공되지 않으면'/ my/path/to/file'을 기본값으로 사용하는 인스턴스 변수를 사용하고 하위 클래스가 다른 값을 설정할 수 있도록 생성자를 제공하십시오. – user2357112

+0

이 질문은 모순을 구체화하기 때문에 주제가 아닌 것 같습니다. – EJP

답변

1

당신은`final` 값이

abstract class A { 
    public abstract String getConst(); 
} 

public class B extends A { 
    @Override 
    public String getConst() { return "path1"; } 
} 

public class C extends A { 
    @Override 
    public int getConst() { return "path2"; } 
}