親アイテム
親クラスItemには、effectというメソッドがあります
package property;
public class item {
String name;
int price;
public void buy() {
System.out.println("购买了" + name);
}
public void effect() {
System.out.println("购买后的效果");
}
}
サブクラスLifePotion
サブクラスLifePotionはItemを継承し、メソッド効果も提供します
package property;
public class lifepotion extends item{
public void effect() {
System.out.println("使用血瓶可以回血");
}
public static void main(String args[]) {
lifepotion b = new lifepotion();
b.effect();
}
}
オブジェクトがエフェクトを呼び出すと、そのメソッドが出力されます
このような書き換えメカニズムがない場合はどうなりますか?
オーバーライドメカニズムがない場合、つまりLifePotionクラスがない場合、Itemを継承すると、すべてのメソッドを変更することはできません。
しかし、LifePotionは少し異なる機能を提供したいと考えています。この目標を達成するためには、Itemの継承をあきらめ、すべてのプロパティとメソッドを書き直してから、エフェクトを作成するときに少し変更を加えるしかありません。
これにより、開発時間とメンテナンスコストが増加します
演習-書き直し⭐⭐
クラスMagicPotionの青いボトルを設計し、Itemを継承し、エフェクトメソッドを書き直して、
「青いボトルを使用した後、魔法に戻ることができます」と出力します。
package property;
public class magicpotion extends item{
public void effect() {
System.out.println("使用蓝瓶后恢复蓝量");
}
public static void main(String args[]) {
magicpotion a = new magicpotion();
a.effect();
}
}