【发布时间】:2016-04-06 18:03:35
【问题描述】:
为简单起见,假设我有一个“Base”抽象类:
public abstract class BaseClass
{
public abstract void BaseMethod(object obj);
public abstract void BaseMethod();
}
我想从这个“BaseClass”继承第二和第三类:
public class Class1 : BaseClass
{
public override void BaseMethod(object obj)
{
//Some code
}
}
public class Class2 : BaseClass
{
public override void BaseMethod()
{
//Some code
}
}
基本上,我希望每个类实现一个方法而不实现另一个。上面的例子不起作用,因为对于每个类,我都被提示实现另一个抽象方法。
我知道我可以只实现另一个方法“空”。但是,我试图避免这种情况,因为我发现了以下语句:
可以在不实现抽象方法的情况下继承抽象类(尽管这样的派生类本身就是抽象的)
这个说法有错吗?非常感谢有关此主题的任何意见。谢谢!
【问题讨论】:
-
为什么要这样做?你想解决什么问题?
-
"(虽然这样的派生类本身是抽象的)" 试图阻止子类实现或覆盖特定的基类方法是徒劳的练习。如果你想让自己痛苦,只需到外面用头撞人行道。
-
如果您将这些课程设为
abstract,就可以了。当然,任何派生自它们但不是abstract的类都必须实现另一种方法。也许你可以解释为什么你认为你需要这样做,我们可以建议另一种方法。也许你真的想要两个独立的接口,每个接口都定义了这些方法。 -
很像接口,抽象类可以继承其他抽象类。在这种情况下,派生类当然不能实现基类的任何抽象方法。但是,当您从抽象类继承,并且您的类不是抽象的时,您必须实现所有抽象方法。这就像实现一个从另一个接口派生的接口。
标签: c# inheritance abstract-class