继承继承的抽象类与实现

本文关键字:继承 实现 抽象类 | 更新日期: 2023-09-27 18:36:19

抱歉,我不知道如何用几个单词写下我的问题,所以我什至无法正确谷歌它。

问题是:我有抽象类链。

 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)?

我不明白如何在没有抽象类的情况下制作这个架构,但我不想用返回基础编写 7 个额外的属性。道具名称;在每个非抽象类中:(

界面不起作用,因为我需要使用字段。(这是团结)

继承继承的抽象类与实现

出于某种原因,非抽象类应该实现 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; }
    }
}

你的问题不清楚,所以我只是告诉你如何声明一个 3 级层次结构。

  1. 具有一个抽象属性的抽象基类:

    abstract class AbEntity
    {
        public abstract int PropertyEntity { get; }
    }
    
  2. 一个派生的抽象类,其中包含 PropertyEntity 的实现和另一个抽象属性。

    abstract class AbHero : AbEntity
    {
        public override int PropertyEntity { get { /* ... */ } }
        public abstract string PropertyHero { get; }
    }
    
  3. 实现其余抽象属性的非派生类(只是PropertyHero,而不是PropertyEntity

    class NonAbstractHero : AbHero
    {
        public override string PropertyHero { get { /* ... */ } }
    }