覆盖Java中的变量?

时间:2014-05-14 14:39:04

标签: java

我必须实现具有不同类型花的类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的重量?

2 个答案:

答案 0 :(得分:0)

Java只允许覆盖方法。您必须向int getWeight()类添加Flower方法,并覆盖它。

答案 1 :(得分:0)

无法在Java中覆盖变量。因此,每个人都有自己的变量实例。

要做的好事是创建一个函数getWeight(),使其成为抽象的,然后子类必须用它们自己的值来实现它。