在不使用全局变量的情况下将对象发送到父类

时间:2019-03-15 15:20:42

标签: java inheritance

下面的一个简单的类在下面解释我的问题:

 public class TestA extends TestParent {
    public TestA { 
        //some code here
    }
    public void connect() {
        //some more code here
        File project = otherproject.getProjectFile();
    }
 }

我希望此project文件在TestParent中可用。有没有办法在TestParent中不创建全局变量的方法?如果还有其他方法,请告诉我。如果由于某种原因在这种情况下不使用全局变量是一个坏主意,请也进行注释。

3 个答案:

答案 0 :(得分:1)

使用抽象方法“ getProjectFile”将TestParent类更改为abstrac类

public abstract class TestParent {

   private void methodThatUseFile(){
    // invoke child implementation
    // in this way parent can use project created in child class
    File project= this.getProjectFile();
     // TODO

   }

  abstract File getProjectFile();

}

然后在子类中实现abstract方法

public class TestA extends TestParent {
    public TestA { 
        //some code here
    }

    @Override
    public File getProjectFile() {
        //some more code here
        File project = otherproject.getProjectFile();
        return project;
    }
 }

答案 1 :(得分:0)

使它成为connect()方法的返回值:

protected File connect() {
    //some more code here
    File project = otherproject.getProjectFile();
    return project;
}

答案 2 :(得分:0)

您到底想做什么?

您可以这样创建TestParent:

public class TestParent {
    protected File project;
}

并拥有:

public void connect() {
    //some more code here
    project = otherproject.getProjectFile();
}

或者也许:

public class TestParent {
    private File project;

    protected setProject(File project) {
        this.project = project;
    }
}

使用:

public void connect() {
    //some more code here
    setProject(otherproject.getProjectFile());
}

或者(!)如果TestParent正在动态调用connect(),则可以让connect()返回文件:

public File connect() {
    //some more code here
    return otherproject.getProjectFile();
}