首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在子类调用一个基方法以及同时调用一个父类时两次调用该基方法

如何避免在子类调用一个基方法以及同时调用一个父类时两次调用该基方法
EN

Stack Overflow用户
提问于 2013-04-22 07:41:34
回答 1查看 483关注 0票数 0

我有以下关于野生动物园的代码:

代码语言:javascript
复制
public class Bird
{
  public void virtual Exercise()
  {
     some logic here
  }

  public void virtual Feed()
  {
     Exercise();

     some logic here
  }
}


public class Penguin : Bird
{
  public void override Exercise()
  {
     base.Exercise();
     some logic here
  }

  public void override Feed()
  {
     Exercise();
     base.Feed();
     some logic here
  }
}

所以每次喂鸟的时候,它也必须被锻炼。然而,鸟可以在不喂食的情况下进行锻炼。

企鹅是一种特殊的鸟类,它需要鸟的运动和一些特定的企鹅运动。喂企鹅需要喂鸟,外加一些额外的企鹅要求。

我在这段代码中遇到的问题是,当Feed被调用时,它会得到两次鸟练习。企鹅们会很累的。

我如何改进代码,以便在喂企鹅时,每次喂食企鹅时,只对鸟和企鹅练习一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 07:45:02

只需从Penguin.Feed()调用中删除Exercise()即可。正如您注意到的,当您调用base.Feed()时,将调用Exercise(),因此这样做是多余的。base.Feed()调用将调用Exercise()的企鹅版本,因此您将为这只鸟获得正确的练习。

(删除了对哺乳动物的引用,因为它已从问题中删除)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16137393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档