英文:
I'm trying to extend a class but exclude a certain property in the process
问题
I have a class Food and I extended it to a class OrderedItem but I'm trying to extend it without the num score property. Is this possible?
我有一个名为 Food 的类,我将它扩展成了一个名为 OrderedItem 的类,但我想在新类中去掉 num score 属性。这是否可能?
英文:
I have a class Food and I extended it to a class OrderedItem but I'm trying to extend it without the num score property. Is this possible?
Food {
      String imgUrl;
      String desc;
      String name;
      String waitTime;
      num score;
      int price;
      int pq;
      int quantity;
      bool favourited;
      List<Variation> variations;
      Variation selectedVar;
      String about;
      bool highlight;
    }
OrderedItem
class OrderedItem extends Food {
  Variation selectVar;
  OrderedItem(
      this.selectVar,
      super.imgUrl,
      super.desc,
      super.name,
      super.pq,
      super.waitTime,
      super.score, //I'm trying to remove this in the new class
      super.price,
      super.quantity,
      super.variations,
      super.about,
      super.favourited,
      {super.highlight = false});
}
答案1
得分: 1
不,不可能“排除”一个属性。
您应该重新构建您的继承链:
Food 不应该在第一次包含一个分数属性。
从食物中删除 score 属性。
引入一个新的类 ScoredFood,它扩展了 Food 并添加了分数属性。
现在 OrderedItem 可以扩展 Food,而不继承分数属性。
此外,请重新考虑在这里是否应该使用继承或组合。
一个 OrderedItem 真的是一个 Food 吗,还是一个 Food 只是一个 OrderedItem 的一部分(因此应该作为其 food 属性可访问)?
英文:
No, it is not possible to "exclude" a property.
You should instead refactor your inheritance chain:
Food should not include a score property in the first place.
Remove the score property from food.
Introduce a new class ScoredFood which extends Food and adds the score property.
Now OrderedItem can extend Food without inheriting a score property.
Besides, reconsider whether you should be using inheritance or composition here.
Is an OrderedItem really a Food, or is a Food just part of an OrderedItem (and should thus be accessible as a food property of it)?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论