Java 如何聚合抽象类?

Java 如何聚合抽象类?,java,abstract,aggregation,Java,Abstract,Aggregation,所以我试图实现两个类之间的聚合关系。但是,对于如何用抽象类实现它,我有点困惑。 有什么建议吗 饮料.java public class Beverage { private Size size; private SizeFactor sizeCost; private String description; public Beverage(){} public Size getSize(){

所以我试图实现两个类之间的聚合关系。但是,对于如何用抽象类实现它,我有点困惑。 有什么建议吗

饮料.java

    public class Beverage {

        private Size size;
        private SizeFactor sizeCost;
        private String description; 

        public Beverage(){}

        public Size getSize(){
            return size;
        }

        public SizeFactor getSizeCost(){
            return sizeCost;
        }

        public String getDescription(){
            return description;
        }

        public void setSize(Size s){
            size = s;
        }

        public void setSizeCost(SizeFactor cost){
            sizeCost = cost;
        }

        public double cost(){
            return sizeCost.sizeCost(size);
        }

    }
BeverAgewithingCredition.java

   public abstract class BeverageWithIngredient extends Beverage {

   private Beverage drink = new Beverage();

   public abstract String getDescription();
   public abstract double cost();

}
基本上,这就是我要做的:


您必须将
饮料
注入
饮料成分

public abstract class BeverageWithIngredient extends Beverage {

   private Beverage drink;

   public BeverageWithIngredient(Beverage drink) {
       this.drink = drink;
   }

   public abstract String getDescription();
   public abstract double cost();
}

不应使用“扩展”进行聚合。这应该是一种“has-a”关系,而不是“is-a”关系,is“extends”意味着。在这里阅读更多:混合has-a和is-a关系没有什么错。此图符合装饰器模式上面的图遵循k0ner所述的装饰器模式。