读书人

封装后是属性还是对象?该如何解决

发布时间: 2012-05-31 12:19:24 作者: rapoo

封装后是属性还是对象?
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.. 

读书人网 >C#

热点推荐