我必须实现具有不同类型花的类Vase。每种花都有明确的重量。
public class Vase {
int weight=0;
void Put (Flower a)
{
weight+=a.w;
}
void Remove (Flower a)
{
weight-=a.w;
}
int getTotalPrice()
{
return weight;
}
}
public abstract class Flower {
int w =10;
}
public class Rose extends Flower{
int w =3;
}
public class Tulip extends Flower{
int w =1;
}
我有义务使用继承。然后当我这样做时:
Vase vase1= new Vase();
Rose rose1=new Rose();
Rose rose2=new Rose();
Tulip tulip1=new Tulip();
firstv.Put(rose1);
firstv.Put(rose2);
firstv.Put(tulip1);
System.out.println(vase1.getTotalPrice());
我得到30而不是7?如何更改代码以使getTotalPrice计算Rose not Flower的重量?
答案 0 :(得分:0)
Java只允许覆盖方法。您必须向int getWeight()
类添加Flower
方法,并覆盖它。
答案 1 :(得分:0)
无法在Java中覆盖变量。因此,每个人都有自己的变量实例。
要做的好事是创建一个函数getWeight()
,使其成为抽象的,然后子类必须用它们自己的值来实现它。