是否建议将基类的成员变量设置为protected,以便子类可以访问这些变量?或者是否更建议将成员变量设置为private并让子类通过getter和setter获取或设置变量?
如果建议使用getter和setter方法,何时使用受保护的变量?
这是非常相似到这个问题,是否要通过属性或直接访问同一个类中获取信息.这也许值得阅读所有这些答案.
就个人而言,我不喜欢任何字段是非私有的,偶尔会出现具有不可变值的静态只读字段(无论是否为const).对我而言,属性只是提供更好的封装程度.数据的存储方式是实现决策,而不是API决策(与属性不同).为什么类Foo派生于Bar类关心类Bar的实现?
简而言之,我总是寻找属性,除了一次性测试代码之外我不会使用受保护的变量.
通过在C#3.0中自动实现的属性,将字段转换为属性比以往更容易.没有理由不去做.