好的,基本上我有以下问题:我试图让一个抽象类继承另一个具有抽象方法的抽象类,但我不想在它们中的任何一个中实现抽象方法,因为第三个类继承了它们:
public abstract class Command
{
public abstract object execute();
}
public abstract class Binary : Command
{
public abstract object execute(); //the issue is here
}
public class Multiply : Binary
{
public override object execute()
{
//do stuff
}
}
我试图将二进制命令与一元命令分开,但不想/不能在其中实现执行方法。我想过让二进制覆盖抽象方法(因为它必须这样做),然后只是抛出一个未实现的异常。如果我让它覆盖,那么我必须声明一个主体,但如果我让它抽象,那么我就“隐藏”了继承的方法。
有什么想法吗?
你不需要在二进制类中声明执行()
,因为它已经从命令继承。抽象方法不需要由其他抽象类实现——需求被传递给最终的具体类。
public abstract class Command
{
public abstract object execute();
}
public abstract class Binary : Command
{
//the execute object is inherited from the command class.
}
public class Multiply : Binary
{
public override object execute()
{
//do stuff
}
}
完全省略Binary
中执行()
的声明。由于Btory
也是抽象的,因此您不必实现其祖先的任何抽象方法。