在路上

导航

Java和C#语法对比

  1. Java 有静态导入,既可以导入静态方法和字段。 .NET没有
  2. Java里package和文件夹对应关系是强制的,要改都改。而C#中namespace和文件夹可以不对应,C# 更喜欢在一个project下所用源文件的namespace都一样,即使在不同文件夹下的C#源文件。
  3. Java 中子类override父类方法,只要方法签名相同即可。 C#中子类方法必须加上override,否则变成了隐藏, 编译器会出警告, 建议子类方法前加new。

同时,C#重写时,父类方法要加virtual,而java不需要,java默认实例方法为虚方法。

  1. Java 中的super相当C#中的base
  2. Java中子类重写方法的访问控制级别(大)和返回值(小)可以不同与父类的,C#必须一致
  3. Java有初始化块,C#没有。当Java创建一个对象时,先为该对象实例Field分配内存,声明,再执行初始化块或声明Field时指定的初始值,再执行构造器。
  4. Java基本数据类型会对应包装类,如int->Integer,而C#自动帮助做了封装
  5. Java 接口可放静态常亮,c#不可以
  6. 只有Java有Checked异常,要么在当前方法处理,要么在方法定义声明抛出该异。其他语言的异常都属于Runtime异常
  7. Java:类全名=包名+类名  C#:类全名=命名空间+类名
  8. Java接口可定义字段(static final),C#不行
  9. C#没有类型通配符,Java中大多数时间可以用泛型方法代替类型通配符。  以下两个方法等价

       public void Set(List<? extends Testable> l){}

        public <M extends Testable> void Set1(List<M> l){}

posted on 2016-11-28 15:42  Clarence Yang  阅读(135)  评论(0编辑  收藏  举报