如何从父类调用子方法?

时间:2017-05-05 07:34:00

标签: android inheritance

假设我有一个继承自 ParentFragment 的类 ChildFragment 。目的是让一些活动和片段具有通常由一个 ParentFragment 处理的按钮。

当用户按下刷新按钮时,它将调用refresh()中的ParentFragment功能。但是,实际下载此文件的操作由ChildFragment处理,因为每个片段都有不同的内容。因此,每当refresh()完成时,我希望这个ParentFragment在子代中调用一些东西。

我该怎么做?或者,如果有更好的方法,它也会有所帮助。

3 个答案:

答案 0 :(得分:1)

class ParentFragment() {

    protected void refresh() {
        // general code when refresh every fragment
    }
}

class ChildFragment1 extend ParentFragment {
    @Override
    public void refresh() {
         super.refresh();
         // code for refresh child fragment1
    }
}

class ChildFragment2 extend ParentFragment {
    @Override
    public void refresh(); {
         super.refresh();
         // code for refresh child fragment2
    }
}

答案 1 :(得分:1)

如果您不希望子类必须实现刷新并调用super.refresh,请在ParentFragment中为downloadFile方法定义一个抽象方法,然后在子(ren)类中实现它:

class ParentFragment {
    public void refresh() {
        downloadFile();
    }

    protected abstract void downloadFile();
}

class ChildFragment extends ParentFragment {
    @Override
    protected void downloadFile() {
        // do the download here
    }
}

答案 2 :(得分:1)

EventBus! - 简化组件之间的通信