您的位置:首页 > 运维架构

何时该实用属性Property,何时用Proected——类间继承

2004-12-03 10:59 417 查看
在看Observer模式的时候,参考了IView 的 Observer模式简介
发现一个问题,如果是类的继承,就像Observer 和ConcreteObserver之间,父类中有个字段aSubject被设置成protected的访问级别,当然可以被子类ConcreteObserver引用到,同时这个字段也作了get/set的Property属性!那么在子类ConcreteObserver中的函数用哪个? 

public override void Update() 
    {      
      // 第一种 用Property  :this.ObservedSubject

            System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,

                strObserverName,this.ObservedSubject.ImportantSubjectData);  

            // 第二种 用Protected  : aSubject

          System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,

                strObserverName,aSubject.ImportantSubjectData);

        } 

其实两个都可以,因为Property也可以被子类访问,一般来说不应该有两个出口给子类的,

想讨论一下,Property在什么情况下被使用。

很显然protected 的初衷就是为了继承用的,我认为此处使用Protected  !  

完整地代码参见 Observer 代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: