2014-01-30 40 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

'final'值不能被覆蓋。 – Prince

+1

爲此,最好不要引用硬編碼的靜態字段。如果沒有提供另一個值,可以使用實例變量,可能默認爲'/ my/path/to/file',並提供讓子類設置不同值的構造函數。 – user2357112

+0

這個問題似乎是無關緊要的,因爲它體現了矛盾。 – EJP

回答

1

你可以嘗試

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"; } 
}