2012-03-02 149 views
0

我試圖實現自己的File類,它從java.io.File擴展而來(請不要評價我:-),並且我試圖通過構建我的類給java.io.File的實例如下:從父類構造的擴展類

public class File extends java.io.File { 

    public File (String fileName) { 
     super(fileName); 
    } 



    public File (java.io.File file) { 
     // the problem 
     super = file; 
    } 
    ... 
} 

我的問題是,我想我的構造類像super = file這顯然是不正確的表達。你能建議如何做到這一點?

謝謝。

+3

你能解釋爲什麼* *你想做到這一點?我們可能會提出更好的解決方案。 super =文件不起作用,因爲沒有「超級」實例,只有「this」的實例。我想你想要的是一個*包裝*,而不是一個擴展。 – Kylar 2012-03-02 13:21:53

回答

1

如何

public File (java.io.File file) { 
    super(file.getPath()); 
} 
+0

這不是那種乾淨的解決方案,但它做我想要的。謝謝。 – 2012-03-02 13:52:27

4

您應該使用成分過繼承,下面是它看起來像

class YourFile{ 
    private final File thatFile; 
    public YourFile(File file) { 
    thatFile = file; 
    } 
//getter for thatFile may be here 
} 
3

Super,像this是不可轉讓的,但你似乎已經知道了。如果我正確理解你,你想獲得Ctor的副本。爲此,您應該提取io.File的屬性,並用該數據構建您自己的File

或使用組合物作爲gasan建議。組成的缺點是你不能用你自己的代替常規java File類的用法。