c#中带有更多参数的子类方法的OOP设计
本文关键字:类方法 OOP 设计 参数 | 更新日期: 2023-09-27 18:13:24
假设我有这两个类:
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
但我真的不明白解决办法。谢谢你!
不确定您想要实现什么,但您可能需要重新考虑设计。似乎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
}
}
当您从一个类继承时,您不能更改需要为这些方法提供实现的方法。但是你可以添加新的方法。
有几个方法可以达到你想要的
您为
方法提供了两个重载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){}