【发布时间】:2014-10-12 20:29:20
【问题描述】:
我有一个包含 Animal 类以及 Dog 和 Cat 子类的基本代码。我有一个说话的方法。 speak 方法接收一个字符串,并返回一个猫狗“语言”的字符串。如果字符的 ascii 码是偶数,则返回“uff”,如果不是,则返回“vau”。当我重写该方法时,我想从 Dog 类中设置oddSound 和 evenSound,但我找不到合适的方法来执行此操作。
这段代码来自 Animal 类:
public String speak(String what){
String speakableString = new String();
String oddSound = new String();
String evenSound = new String();
for (int i = 0; i < what.length(); i++) {
if((((int) what.charAt(i)) & 1) == 1){
speakableString.concat(oddSound);
}else if ((((int) what.charAt(i)) & 1) == 0){
speakableString.concat(evenSound);
}
}
speakableString = speakableString.substring(0, speakableString.length()-1);
return speakableString;
}
这段代码来自 Dog 类:
public String speak(String what){
//set oddSound = "vau"
//set evenSound = "uff"
return super.speak(what);
}
【问题讨论】:
-
.concat()不会改变任何东西。 -
如果修复
.concat()语句后问题依旧,请贴出相关代码进行继承。 -
听起来像
oddSound和evenSound不应该是方法的局部变量,而是Dog或Cat类的属性。 -
这不是一个错误解决问题。我将尝试通过编辑问题来更清楚地说明这一点。
-
@mattm 这实际上是个好主意。能详细解释一下吗?