日期:2014-05-18  浏览次数:20691 次

封装后是属性还是对象?
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 类型,难道实例也可以赋给属性?

------解决方案--------------------
C# code

public ChongDian chdian{ get; set; } //此处chdain是不是已经被封闭成了属性?

------解决方案--------------------
C# code

ggg.chdian = new DianChi();

------解决方案--------------------
属性只不过是一种所发(或者说是一种写法),属性还要有类型的
------解决方案--------------------
属性也是一种类型

如:public ChongDian chdian{ get; set; }返回ChongDian也是一种类型

而你的new DianChi();也返回一种ChongDian类型的实例。

这样理解一下。


而封装的概念你可以再查一下资料,你给出的整个代码和封装没有任何关系。

封装更重要的是体现于类,组件,项目,工程之间
------解决方案--------------------
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类。
------解决方案--------------------
C# code

class GongLei
  {
  public ChongDian chdian{ get; set; } //此处chdain是不是已经被封闭成了属性?
  public void Chon()
  {
  chdian.Chong();
  }

 static void Main(string[] args)
  {
  GongLei ggg = new GongLei();
  [color=#FF0000]ggg.chdian = new DianChi();[/color] //如果chdain是属性,那么现在new DianChi()这个new出来的实例给赋给属性chdian
  ggg.Chon();
  Console.Read();
  }

可以这样看
DianChi dc = new DianChi()
[color=#FF0000]ggg.chdian = dc;[/color]

另 上面属性的类型是 ChongDian,下面不知道怎么会有个 DianChi..