2类,扩展同一类,可以简化吗?

时间:2018-09-09 05:07:25

标签: java

头等舱

Class A extends C
    @Override
    public String doSomething(){
        String a = "ABC".replace("B", "");
        return a;
}

第二堂课

Class B extends C
    @Override
    public String doSomething(){
        String a = "CBA".replace("B", "");
        return a;
}

是否有办法将此代码放入超类,而不必具有两个几乎完全相同的方法?

2 个答案:

答案 0 :(得分:1)

可以实现一个方法:

public String doSomethingInCommon(String input){
    return input.replace("B", "");
}

这就是您的方法实际上正在做的。当然,这些可以与来自不同类的不同'input'一起使用。

答案 1 :(得分:1)

您可以在基类中创建一个抽象方法,该方法将在您的doSomething()方法中返回“起始字符串”。您可以在doSomething()方法内调用它并进行替换。基类将如下所示:

abstract class C
{
    abstract String getStartString();

    public String doSomething()
    {
        String str = this.getStartString();
        str = str.replace("B", "");
        return str;
    }
}

新的子类必须实现getStartString()方法来生成起点(例如"ABC""CBA"),但是要使用它(并进行替换)的编程逻辑在基类中,只编写一次。