B 类继承自 A 类, β类继承自α类. 同时α作为 A 类的字段, β作为 B 类的字段. 现希望 B 实例调用父类方法(该父类方法调用了字段α)时, 能使用自身环境中的β实例而非α实例(因为α对 B 没有意义, 虽然从父类继承, 但完全不使用, 只使用β)
于是考虑将字段α设为 virtual:
public class Alpha { public virtual void printSelf() { print("this is alpha"); } } public class Beta: Alpha { public override void printSelf() { print("this is beta"); } } public class A { public virtual Alpha alpha { get => _alpha; set => _alpha = value; } private Alpha _alpha public virtual void PrintSelf() { alpha.printSelf(); } } public class B: A { public override Alpha alpha { get => _beta; set{} } // public? private Beta _beta; } public class Main { var b = new B(); b.PrintSelf(); } 请问这样设计合理吗? 另外, 为了访问β实例中的非继承字段, B 类中的β字段必须设为 public, 这样会带来额外的问题吗?
还是说这种需求就是不合理? 已经有点绕晕了现在. 这种"嵌套的继承关系"有没有专业点的称呼?


