如何使2个继承类共享相同的基类属性?

时间:2012-06-27 08:41:58

标签: c# oop design-patterns

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

我有一个基本类,它保持两个不同的平均值。 并且继承类具有相同的方法getAction(),并且它们中的每一个执行不同的计算并且基于它返回动作的计算。 我想为两个继承类都有一个平均值的实例。

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分: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())); 
      }
   }