代码之家  ›  专栏  ›  技术社区  ›  geejay

字段属于一个类,但如何使用多态性

  •  1
  • geejay  · 技术社区  · 16 年前

    我在基类中有一个方法

    class Base
    {
       private static string Colour = "blue";
       string DoStuff() { return ColourProp; }
    
       protected virtual string ColourProp { get{ return Base.Colour; } }
    }
    

    在这个子类的一个实例上调用的

    class Sub
    {
       private static string Colour = "orange";
    
       protected override string ColourProp { get{ return Sub.Colour; } }
    }
    

    目前我正在使用虚拟属性,这是唯一的方法吗?(考虑到字段不能是虚拟的)…

    2 回复  |  直到 16 年前
        1
  •  2
  •   Andrew Hare    16 年前

    是的,您需要使用虚拟属性或虚拟方法来完成这项工作。clr将动态地将所有调用分派给 ColourProp 根据对象的类型(即多态性)正确选择。

        2
  •  0
  •   h0b0    16 年前

    这看起来很好。不要担心虚拟属性。这不仅提供了针对其他对象的数据封装,还提供了针对子类的数据封装。