您的位置:首页 > 编程语言 > Java开发

【JAVA与C#比较】面向对象

2018-02-04 22:45 302 查看
1.Java里方法的参数传递方式只有值传递一种,而C#可以通过reg和out关键字指定引用传递。所谓值传递就是将参数值的副本传入到方法内,而参数本身不受影响。参数为引用类型时,之所以容易造成误会,是因为引用类型作为参数传递,对参数进行的加工操作,实际加工操作的是该引用类型参数指向的实体,而作为参数传递前也是指向的这个实体。最明显的例子就是,在调用方法的最后添加一行代码,给这个参数赋值为null,调用方法的外部使用此参数是不为null的。

2.Java里形参可变用三点...表示,而C#中是用参数数组表示。
public void test(String... books)
public void test(params string[]books)


3.Java中所谓的包,差不多就是C#中的命名空间。所以Java中用关键字import导入包下的类,而C#中用关键字using导入命名空间下的类。值得注意的是java只导入包下面的类,对于包下面的子包中的类,是不会导入的,在C#中不存在这种状况。

4.Java的默认访问控制符是"default",在C#中是"internal"。

5.Java中继承自类用的是关键字"extends",实现接口用的关键字"implements",而在C#中继承都用符号":"来实现。

6.Java中有volatile字段修饰符,指明字段有额外的语义,可被两个或多个线程同时使用,这个修饰符有时可以替代 synchronized。C#没有这种字段,通常用lock来达到同等效果。

7.Java中重写是直接在子类的方法上面添加一个"@Override"标注,而在C#中可以给基类中的方法提供了virtual关键字,子类该方法提供override关键字。两者都可以用同样的方法申明来实现,但这样显得不够直观和规范。

8.Java中子类调用基类的方法用关键字"super",而在C#中使用"base"。

9.在将私有字段提供给外部访问的封装方式不一样,Java中是生成一个get方法和一个set方法,C#中是直接申明一个“属性”,里面有get和set实现方式。

10.Java中如果不希望类再被扩展产生子类,可在类的申明前加上"final"关键字,而在C#中使用"sealed"。

11.Java中函数不能够直接返回多个值,只能通过包装成对象来变相实现,而在C#中可以使用ref和out关键字,申明参数为引用传递达到返回多个值的目的。

12.Java中java8允许在接口中定义默认方法,默认方法可以提供方法实现,C#知道目前好像并不允许这样处理。

13.Java中枚举可以当作是特殊的类,所以可以拥有成员,即字段和方法,而在C#不允许。

14.java 中的注解差不多是C#中的特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息