头等舱
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;
}
是否有办法将此代码放入超类,而不必具有两个几乎完全相同的方法?
答案 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"
),但是要使用它(并进行替换)的编程逻辑在基类中,只编写一次。