Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从父级构造的扩展类_Java_Oop - Fatal编程技术网

Java 从父级构造的扩展类

Java 从父级构造的扩展类,java,oop,Java,Oop,我正在尝试实现我自己的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 prob

我正在尝试实现我自己的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
之类的东西来构造我的类,这显然是一个不正确的表达式。你能建议怎么做吗


谢谢。

您应该使用组合而不是继承,下面是它的样子

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

Super
,比如
这个
是不可分配的,但你似乎已经知道了。如果我理解正确,您希望实现复制。为此,您应该提取
io.File
的属性,并使用该数据构建自己的
文件

或者使用gasan建议的成分。这种组合的缺点是,您不能用自己的类替代常规java
文件
类的用法

怎么样

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

你能解释一下你为什么要这么做吗?我们或许可以提出更好的解决方案。super=文件不起作用,因为没有“super”的实例,只有“this”的实例。我想你想要的是一个包装,而不是一个扩展。这不是一个干净的解决方案,但它实现了我想要的。谢谢