0

野生動物公園に関する次のコードがあります。

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 が呼び出されたときに鳥の運動が 2 回行われることです。ペンギンは本当に疲れます。

ペンギンが餌を与えられたときに、餌ごとに鳥とペンギンに対して1回だけ運動するようにコードを改善するにはどうすればよいですか?

4

1 に答える 1

9

Penguin.Feed() 呼び出しから Exercise() を削除するだけです。お気づきのように、 base.Feed() を呼び出すと Exercise() が呼び出されるため、これを行うのは冗長です。また、base.Feed() 呼び出しは、ペンギン バージョンの Exercise() を呼び出すため、その鳥に適した運動を取得できます。

(哺乳類への言及は質問から削除されたため削除されました)

于 2013-04-21T23:45:02.260 に答える