我有一个基类和两个继承类,我需要在每个继承类中以不同的方式使用基类属性。实现它的优雅方式是什么?
我有一门基础课,它保持了两个不同的平均值。并且继承类具有相同的方法getAction(),并且它们中的每一个都进行不同的计算并根据计算返回一个动作。我想要两个继承类的平均值的一个实例。
我有一个基类和两个继承类,我需要在每个继承类中以不同的方式使用基类属性。实现它的优雅方式是什么?
我有一门基础课,它保持了两个不同的平均值。并且继承类具有相同的方法getAction(),并且它们中的每一个都进行不同的计算并根据计算返回一个动作。我想要两个继承类的平均值的一个实例。
如果可以,请避免继承。下面的解决方案是策略模式的实现,它应该完全适合您的需求。
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
}
}
我会覆盖你需要的方法:
使用 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()));
}
}