[英]Inheriting one overloaded method
我对C#和OOP还是比较陌生,关于继承我有一个问题。
说我有:
public abstract class Command
{
protected Command()
{
}
public abstract string Execute();
public abstract string Execute(object o);
}
public class CommandA : Command
{
public override string Execute()
{
}
}
public class CommandB : Command
{
public override string Execute(object o)
{
}
}
由于CommandA
未实现Execute(object o)
和CommandB
未实现Execute()
因此存在明显的错误。
那么,我的问题是是否需要执行代码来避免这些错误? 是否可以使用空方法?
如果期望子类实际上未实现某些方法,则您正在滥用abstract
。 abstract
用于强制基类必须实现功能。 如果有人调用new CommandB().Execute()
什么?
在某些情况下,设计可能是不正确的,并且最终导致您所处的情况。在这些情况下,它有些常见(尽管我认为有代码味),可以执行以下操作:
public class CommandA : Command
{
public override string Execute()
{
}
public override string Execute(object o)
{
throw new NotImplementedException();
}
}
一种更干净的方法:
public abstract class Command
{
protected Command()
{
}
public abstract string Execute(object o = null);
}
尽管您仍然需要处理有人可能将对象传递给CommandA
的事实。
如果这些命令具有不同的行为,则很可能它们都不应该都属于同一抽象类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.