Java如何在抽象类中可选重写方法?

markbse:

假设我们有一个基类:

public abstract class BaseFragment extends Fragment {
    ...
    protected abstract boolean postExec();
    ...
}

然后从中派生出其他类别(例如,Fragment_Movie,Fragment_Weather ...)

public class Fragment_Music extends BaseFragment{
    @Override
    protected boolean postExec() {
        return false;
    } 
}

但是,向基类添加新方法时:

public abstract class BaseFragment extends Fragment {
    ...
    protected abstract boolean postExec();
    protected abstract boolean parseFileUrls();
    ...
}

Eclipse立即显示错误,要求在已经派生的类中实现此新方法。

是否有必要在基类中添加“默认”抽象方法,以便即使我们不在派生类中实现该方法也不会显示错误?(因为每次基类追加新方法时都要花费很多时间来修复每个派生类。)

akaIDIOT:

最简单的解决方案是添加具有存根实现的方法。声明为抽象需要非抽象扩展来实现该方法。

这样做可以缓解编译问题,尽管在使用时不覆盖它显然会抛出异常:

public abstract class BaseFragment extends Fragment {
    protected boolean doSomethingNew() {
        throw new NotImplementedException("method not overridden");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章