抱歉,我不知道如何用几个字来写我的问题,所以我甚至无法正确地谷歌。
事情是:我有抽象类链。
AbEntity with abstract properties.
AbHero and AbEnemy with realization of AbEntity's properties and with it's own abstract properties
Non-abstract classes.
由于某种原因,非抽象类应该实现AbEntity的抽象属性。他们为什么不能从父母那里接受它(AbHero& AbEnemy)?
我不明白如何在没有抽象类的情况下构建这个架构,但我不想用return base.PropName编写7个额外的属性。在每个非抽象类中:(
接口无法工作,因为我需要使用字段。 (这是统一的)
答案 0 :(得分:0)
由于某些原因,非抽象类应该实现AbEntity的抽象属性。
这不是真的,如果他们继承了abHero并且abHero已经实现了抽象的AbEntity属性,那么就不需要再次实现它们了,看看这个例子:
public abstract class a
{
public abstract int value{ get; }
}
public abstract class b : a
{
public abstract int valueb { get; }
public override int value
{
get { return 1; }
}
}
public class c : b
{
public override int valueb
{
get { return 2; }
}
}
答案 1 :(得分:0)
您的问题并不清楚,所以我只是告诉您如何声明3级层次结构。
具有一个抽象属性的抽象基类:
abstract class AbEntity
{
public abstract int PropertyEntity { get; }
}
派生的仍然抽象的类,其实现为PropertyEntity
,并添加了另一个抽象属性。
abstract class AbHero : AbEntity
{
public override int PropertyEntity { get { /* ... */ } }
public abstract string PropertyHero { get; }
}
实现剩余抽象属性的非派生类(仅PropertyHero
,而非PropertyEntity
)
class NonAbstractHero : AbHero
{
public override string PropertyHero { get { /* ... */ } }
}