覆盖继承的抽象类中的抽象方法

时间:2012-11-22 18:34:35

标签: c# inheritance abstract-class multi-level abstract-methods

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:14)

您不需要在Binary类中声明execute(),因为它已经从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
    }
}

答案 1 :(得分:3)

根本不在execute()中省略Binary的声明。由于Binary也是抽象的,因此不必实现其祖先的任何抽象方法。