9

好的,所以基本上我有以下问题:我试图让一个抽象类继承另一个具有抽象方法的抽象类,但我不想在它们中的任何一个中实现抽象方法,因为第三个类继承自两者其中:

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
     }
}

我正在尝试将二进制命令与一元命令分开,但不想/不能在其中实现执行方法。我想过让 Binary 覆盖抽象方法(因为它必须),然后抛出一个未实现的异常。如果我让它覆盖,那么我必须声明一个主体,但如果我让它抽象,那么我“隐藏”了继承的方法。

有什么想法吗?

4

2 回答 2

17

您不需要execute()在 Binary 类中声明,因为它已经从 Command 继承。抽象方法不需要由其他抽象类来实现——需求被传递给最终的具体类。

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
    }
}
于 2012-11-22T18:37:24.843 回答
3

完全省略execute()in的声明Binary。由于Binary也是抽象的,因此您不必实现其祖先的任何抽象方法。

于 2012-11-22T18:37:13.493 回答