【发布时间】:2015-09-19 17:01:16
【问题描述】:
假设我有这两个类:
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读到了与我的问题类似的内容
但我并不真正了解解决方案。谢谢你。
【问题讨论】:
-
我不明白这个问题; AdvancedThreshold 对象的方法必须不 用两个参数调用的问题是什么?继承不能很好地处理向子类添加限制;子类应该添加新功能,而不是新限制。也许你的阶级关系倒退了?
-
我正在努力解决这个问题stackoverflow.com/a/56904/3032175board 和threeDboard
标签: c# oop design-patterns liskov-substitution-principle