【发布时间】:2019-08-22 15:26:36
【问题描述】:
我最近开始自己练习和学习 Java,我无法理解如何使用多态性来进行更好的编码练习。如何使用多态重构来摆脱以下代码中的 if 和 else 条件?
我有一个父类 Fruit,它有子类 kiwi 和 apple 以及一堆其他水果。 例如:苹果是甜的,猕猴桃是酸的。
我有一个父类 Human,它有子类男孩和女孩。 男孩喜欢甜味,女孩喜欢酸味。 我创建了一个水果对象数组,并使用 if 语句根据水果的味道检查谁喜欢每种水果。
Fruit[] fruit = new Fruit[2];
fruit[0] = new Apple ();
fruit[1] = new Kiwi ();
Boy boy1 = new Boy ();
String boyTaste = boy1.taste;
for (int i = 0; i < fruit.length; i++){
if (fruit[i].flavor.equals (boyTaste)){
System.out.println ("Boy likes " + fruit[i].name + " because " + fruit[i].taste ());
} else {
System.out.println ("Girl likes " + fruit[i].name + " because " + fruit[i].taste ());
}
}
如何通过用多态替换条件来改进以下代码?
【问题讨论】:
-
在“改进”任何东西之前,您首先必须修复该代码。 flavor 似乎是一个字符串,
if (fruit[i].flavor == boyTaste) {经常会失败。您不应该使用==或!=比较字符串。请改用equals(...)或equalsIgnoreCase(...)方法。了解==检查两个 对象引用 是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否以相同的顺序具有相同的字符,这就是这里的重点。 -
好的,谢谢你的提示。
-
如果/当您同时实现甜的“红”苹果和酸的“绿”苹果时,多态性可能会派上用场。
标签: java inheritance polymorphism