class GongLei
    {
        public ChongDian chdian{ get; set; }     //此处chdain是不是已经被封闭成了属性?
        public void Chon()
        {
            chdian.Chong();
        } static void Main(string[] args)
        {
            GongLei ggg = new GongLei();
            ggg.chdian = new DianChi();  //如果chdain是属性,那么现在new DianChi()这个new出来的实例给赋给属性chdian
            ggg.Chon();
            Console.Read();
        }
请帮忙解答:一般情况下创建实例不都是,如:类型  变量名=new 类型();而现在,怎么成了属性=new 类型,难道实例也可以赋给属性?

解决方案 »

  1.   


    public ChongDian chdian{ get; set; } //此处chdain是不是已经被封闭成了属性?
    GongLei类有一个属性是ChongDian,属性名是chdian。这样子
      

  2.   


    ggg.chdian = new DianChi();
    这句话的意思是,GongLei 的一个实例ggg,他的chdian属性被赋值为一个DianChi instance
      

  3.   

    属性也是一种类型如:public ChongDian chdian{ get; set; }返回ChongDian也是一种类型而你的new DianChi();也返回一种ChongDian类型的实例。这样理解一下。
    而封装的概念你可以再查一下资料,你给出的整个代码和封装没有任何关系。封装更重要的是体现于类,组件,项目,工程之间
      

  4.   

    public ChongDian chdian{ get; set; }chaian是属性,设值和取值都是ChongDian类型GongLei ggg = new GongLei();
    ggg.chdian = new DianChi(); 实例化一个GongLei对象ggg,给这个对象的chdian属性赋值,因为要赋的值是ChongDian类型,这里new一个DianChi对象赋值给chdian属性。DianChi类可能是ChongDian的子类,继承了ChongDian类。
      

  5.   


    class GongLei
      {
      public ChongDian chdian{ get; set; } //此处chdain是不是已经被封闭成了属性?
      public void Chon()
      {
      chdian.Chong();
      } static void Main(string[] args)
      {
      GongLei ggg = new GongLei();
      ggg.chdian = new DianChi(); //如果chdain是属性,那么现在new DianChi()这个new出来的实例给赋给属性chdian
      ggg.Chon();
      Console.Read();
      }可以这样看
    DianChi dc = new DianChi()
    ggg.chdian = dc;另 上面属性的类型是 ChongDian,下面不知道怎么会有个 DianChi..