可以实现此功能吗?我有两个抽象类,我想强迫第三类来实现这两个类中的所有抽象方法]
public abstract class A
{
private void MethodA()
{
var fool = Prop*2;
}
public abstract int Prop { get; }
}
public abstract class B
{
private void MethodB()
{
//....
SomeMethod();
//....
}
public abstract void SomeMethod();
}
public class C: A, B
{
public int Prop { .... }
public void SomeMethod { .... }
}
这里的主要问题是,已实现的最终类方法随后在基本抽象类中使用,而这不能通过接口来实现。所以没有解决方法?
我已经阅读了许多类似的问答,但没有任何内容可以解决我的问题。谢谢
否,C#不支持多重继承。您可以实现多个接口,但是显然不一样,因为接口无法实现任何具体的行为。
您可以通过Mixins在C#中执行此操作,它的实现方式不同于多重继承,但最终您会从多个类中获得具有所有方法的对象。
这不是该语言的功能,但是可以在第三方中找到。
您可以在my answer to this other question上或直接在re-mix's codeplex上阅读它>
一些兴趣点:-您可以在Mixin中覆盖方法,从而从外部修改新创建的类的行为。-您可以创建在范围内创建类别不同的范围。-您需要通过工厂创建mixin'd对象(谢天谢地,新的MyObject()不会考虑Mixins)。
您是否尝试过使用多个接口?这可能是类似的情况:Multiple derived abstract classes?
具体?不可以,因为C#不支持多重继承。
如果您愿意在最后一堂课中实现功能,则可以创建接口并实现所需的任意数量...
从.NET Core 3.0上的C#8.0开始,C#支持default implementations for Interface members。