当前位置: 首页 > 图文教程 > Java技术 > Java基础 > Java基础:小编浅谈C#与java的属性区别

Java基础
Java串行端口技术协议
Java 1.5中面向方面(AOP)编程
实现基于Aspectwerkz的AOP开发
EJB 3.0开发指南之消息驱动Bean
Java堆的管理--垃圾回收
EJB 3.0开发指南之依赖注入
EJB3.0开发指南之有状态会话Bean
EJB3.0开发指南之无状态会话Bean
基于Java的企业分布式应用
J2SE5.0新特性之ProcessBuilder
J2SE5.0新特性之使用代理服务器
Java数据对象技术JDO
Java中ThreadLocal的设计与使用
Hibernate下数据批量处理
Java程序设计中的接口应用
Java中利用JMF编写摄像头拍照程序
性能、规模、风险 初评hibernate
Struts+Hibernate中解决汉字编码
Spring Framework标记库初学指南
基于Java的IDEA加密算法

Java基础:小编浅谈C#与java的属性区别


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-26   浏览: 78 ::
收藏到网摘: n/a

多年以来,很多人认为微软与SUN是两大对立公司,究其原因是C#java的存在,使之成为两大公司相互抗衡的武器。因为C#java在很大地方都是很相似的,尽管如此,两者不同的地方也很多,所谓“于细微处见差异”。那么两者的相似和区别都在什么地方呢?下面小编就与大家一起分享C#java的属性区别,希望对大家有所帮助。

 

  属性的概念对大家来说应该是很熟悉的,类成员函数可以自由地访问本类中的任何属性成员。不过若要从一个类中去访问另一个类中的属性,那就比较麻烦了,所以很多时候我们使用GetxxxSetxxx方法,这样看起来显得极不自然,比如用Java或者C++,代码是这样的:

 

  foo.setSize (getSize () + 1);

  label.getFont().setBold (true);

 

  但是,在C#中,这样的方法被“属性化”了。同样的代码,在C#就变成了:

 

  foo.size++;

  label.font.bold = true;

 

  可以看出来,C#显然更容易阅读和理解。我们从这个“属性方法”的子程序代码中,也可以看到类似情况:

 

Java/C++:

 

public int getSize()

{

  return size;

}

 

public void setSize (int value)

{

  size = value;

}

 

C#:

public int Size

{

 get{return size;}

 set{size = value;}

}

 

  为了区分这种属性化的方法和类的属性成员,在C#中把属性成员称作“域(field)”,而“属性”则成为这种“属性化的方法”专用的名词。顺便说一句,其实这样的属性化方法在VBDELPHI中是经常碰到的,在VB中它也就叫属性。

 

  另外,在C#GetSet必须成对出现,一种属性不能只有Get而没有Set(在JavaC++中就可以只有Get或者只有Set),C#中这样做的好处在于便于维护,假如要对某种属性进行修改,就会同时注意GetSet方法,同时修改,不会改了这个忘了那个。