如何强制类使用抽象方法中的语句

时间:2016-06-13 06:50:26

标签: java

我有一个由其他类实现的抽象方法:

protected abstract void uninstallApp(); 

我想要做的是强制所有必须实现此方法的类使用System.out.println()和另一种方法:Log.report()

有什么方法可以实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

例如,您可以在最终方法中在父抽象类中执行日志记录(因此子项不会覆盖它)。此类调用子类应覆盖的第二个方法。如下所示:

protected final void uninstallApp(){
    doUninstallApp();
    Log.report();
}

protected abstract void doUninstallApp();

答案 1 :(得分:0)

我同意@Loic,我们可以在这里找到Command模式......我试着写下面的代码..可能它可以帮助..

class Parent {
    public final void uninstallApp() {
        print();
        doSomethingUsefull();
        logReport();
    }

    //To be overriden as per requirement
    protected void logReport() {
        Log.report();
    }

    //To be overriden as per requirement
    protected void print() {
        System.out.println();
    }

    //To be overriden as per requirement
    protected void doSomethingUsefull() {
        //Implementation goes here
    }
}

class Child extends Parent {
    public void logReport() {
        //Implementation goes here
    }

    public  void print() {
       //Implementation goes here
    }

    public void doSomethingUsefull() {
        //Implementation goes here
    }
}

class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        p.uninstallApp();
    }
}