[英]OOP Design in C# subclass method with more parameters
假设我有这两个类:
public class Threshold {
int min;
int max;
public virtual int calculate(int min, int max)
{
//calculate basic Threshold
}
}
public class AdvancedThreshold : Threshold {
int min;
int max;
int extra;
public override int calculate(int min, int max, int extra)
{
//calculate Advanced Threshold
}
}
我不能这样做,因为基本方法有两个参数,而子类方法有三个参数。
解决该问题的最佳设计实践是什么? 有可能使用多态对象吗? 我需要使用复合对象而不是继承吗?
我在这里阅读了与我的问题类似的内容https://stackoverflow.com/a/56904/3032175
但是我不太了解解决方案。 谢谢。
当您从类继承时,您无法更改需要为方法提供实现的方法,但是您可以添加新方法。
有几种方法可以实现您想要的
您为该方法提供了两个重载
public virtual int calculate(int min, int max){}
public virtual int calculate(int min, int max,int extra){}
或者您可以在另一个方面实施
public override int calculate(int min, int max)
{
calculate(min,max,extra)
}
public int calculate(int min, int max, int extra){}
不确定要实现的目标,但您可能需要重新考虑设计。 似乎min/max/extra
不应传递给Calculate
方法,而应设置为属性或在构造函数中传递。
public class Threshold
{
public int Min { get; set; }
public int Max { get; set; }
public virtual int Calculate( int input )
{
// logic goes here
}
}
public class AdvancedThreshold : Threshold
{
public int Extra { get; set; }
public override int Calculate( int input )
{
// advanced logic goes here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.