带有正文的 Java "abstract like"方法

标签 java class methods abstract inheritance

有以下类:

public abstract class Super
{
    public abstract void run();
}

public class Sub1 extends Super
{
    @Override
    public void run ()
    {
        System.out.println("Method called");
        System.out.println("Sub1 called");
    }
}

public class Sub2 extends Super
{
    @Override
    public void run ()
    {
        System.out.println("Method called");
        System.out.println("Sub2 called");
    }
}

我如何避免必须编写“System.out.println("Method called");”两次?

谢谢解答

口径R.50

最佳答案

将通用功能引入父类(super class),并定义另一个抽象方法,子类将为其定义自己的实现。

public abstract class Super {
    public void run() {
        System.out.println("Method called");
        printMessage();
    }
    abstract void printMessage ();
}

public class Sub1 extends Super {
    @Override
    void printMessage() {
        System.out.println("Sub1 called");
    }
}

public class Sub2 extends Super {
    @Override
    void printMessage () {
        System.out.println("Sub2 called");
    }
}

这样就可以避免重复调用父类的公共(public)方法两次。

关于带有正文的 Java "abstract like"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17506449/

相关文章:

java - 如何将 Android 应用构建为系统服务

java - 我如何使用带有多个字符串和参数的 printf 命令?

python - 如何调用存储在变量中的方法?

angular - 使用一种方法将多个变量设置为 false Angular4

python - python中方法和属性的区别

java - 使用不同的 Button 更改 SeekBar 的 slider 位置

java - 如何在 Java8 中使用 LocalDate 实现 LessThanOrEqual 和 GreaterThanOrEqual

java - 类和对象的基础知识 : Java

php - 如何在 Symfony Bundle 中包含自定义类?

arrays - 无法快速加载类数组中的数组数据