0

我有一个基类和两个继承类,我需要在每个继承类中以不同的方式使用基类属性。实现它的优雅方式是什么?

我有一门基础课,它保持了两个不同的平均值。并且继承类具有相同的方法getAction(),并且它们中的每一个都进行不同的计算并根据计算返回一个动作。我想要两个继承类的平均值的一个实例。

4

2 回答 2

1

如果可以,请避免继承。下面的解决方案是策略模式的实现,它应该完全适合您的需求。

class Params
{
    public int First {get;set;}
    public int Second {get;set;}
}

interface IAverageCounter
{
    double Calculate(Params parameters);
}

class SomeAverage : IAverageCounter
{
    public double Calculate(Params parameters)
    {
        return (parameters.First + parameters.Second) / 2;
    }
}


class OtherAverage : IAverageCounter
{
    public double Calculate(Params parameters)
    {
        return (parameters.Second - parameters.First) / 2
    }
}
于 2012-06-28T18:33:09.323 回答
0

我会覆盖你需要的方法:

MSDN

使用 override 修饰符来修改方法、属性、索引器或事件。覆盖方法提供了从基类继承的成员的新实现。被覆盖声明覆盖的方法称为被覆盖的基方法。被覆盖的基方法必须与覆盖方法具有相同的签名。

   public class BaseClass
   {
      public double x;

      // Constructor:
      public Square(double x) 
      {
         this.x = x;
      }

      public virtual double Area() 
      {
         return x*x; 
      }
   }

   class InhertingClass1: BaseClass
   {
      // Constructor:
      public Cube(double x): base(x) 
      {
      }

      // Calling the Area base method:
      public override double Area() 
      {
         return (6*(base.Area())); 
      }
   }


   class InhertingClass2: BaseClass
   {
      // Constructor:
      public Cube(double x): base(x) 
      {
      }

      // Calling the Area base method:
      public override double Area() 
      {
         return (15*(base.Area())); 
      }
   }
于 2012-06-27T08:45:03.267 回答