5个C#和Java之间的不同方法

发表于:2012-6-12 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:迷途d书童    来源:51Testing软件测试网采编

  C#和Java之间最大的区别之一,是如何处理的方法。在这两种语言,方法是功能代码的基石:他们定义变量,并指定对这些变量进行操作,返回值给其他方法使用。尽管Java语言的创建者遵循了许多基于C语言的概念,他们研发的方法允许更少的限制和增加更多的灵活性。

  #1:Virtual 方法

  C#:方法默认是非虚方法

  Java:方法默认是虚方法

  虚方法允许任何类继承,并重写其方法。在Java中,所有方法默认是虚方法。此默认设置防止插入的一个与继承类同名的不相关的方法。

  在C#中,开发人员必须明确指定带“virtual”关键字的虚方法:

  1. public class Dimensions  
  2. {  
  3.     public const double pi = Math.PI;  
  4.     protected double x, y;  
  5.     public Dimensions()  
  6.     {  
  7.     }  
  8.     public Dimensions (double x, double y)  
  9.     {  
  10.         this.x = x;  
  11.         this.y = y;  
  12.     }  
  13.     public virtual double Area()  
  14.     {  
  15.         return x*y;  
  16.     }  
  17. }

  继承类要使用虚方法,该方法必须加上“override”关键字:

  1. public class Circle: Dimensions  
  2. {  
  3.     public Circle(double r): base(r, 0)  
  4.     {  
  5.     }  
  6.     public override double Area()  
  7.     {  
  8.         return pi * x * x;  
  9.     }  
  10. }

  #2:Generator 方法

  C#:支持generator方法

  Java:不支持generator方法

  generator方法允许开发人员控制如何循环处理每一次迭代。而不是创建一个组,generator方法返回每次迭代后的值作为循环过程的代码。Java没有内置处理generator方法的功能,假设在Java中有这些功能代码,往往也是庞大而复杂的。C#使用“IEnumerable”接口创建generator函数和“yield”命令返回值:

  1. public class TexasCityCollection : IEnumerable<string> {  
  2.     public IEnumerator<string> GetEnumerator() {  
  3.         yield return "Houston";  
  4.         yield return "Auston";  
  5.         yield return "Dallas";  
  6.         yield return "San Antonio";  
  7.     }  
  8. }

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号