【JAVA与C#比较】面向对象
2018-02-04 22:45
302 查看
1.Java里方法的参数传递方式只有值传递一种,而C#可以通过reg和out关键字指定引用传递。所谓值传递就是将参数值的副本传入到方法内,而参数本身不受影响。参数为引用类型时,之所以容易造成误会,是因为引用类型作为参数传递,对参数进行的加工操作,实际加工操作的是该引用类型参数指向的实体,而作为参数传递前也是指向的这个实体。最明显的例子就是,在调用方法的最后添加一行代码,给这个参数赋值为null,调用方法的外部使用此参数是不为null的。
2.Java里形参可变用三点...表示,而C#中是用参数数组表示。
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#中的特性。
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#中的特性。
相关文章推荐
- Java与C#关于面向对象的比较
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- C#与C++,JAVA的比较
- JAVA与C#比较
- C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)
- C#与Java的比较
- C#与Java的比较(转)
- C++ Java C#的比较-成员归属权的表示
- C#与Java的比较(转载)
- 【JAVA与C#比较】转义字符
- C#与Java的比较
- C# Inner Class vs. java 的inner class比较
- java 与C# 中的String比较
- 执行效率做比较,Go、python、java、c#、delphi、易语言等
- C#与Java的简单比较
- C#、Java之比较
- Java8的新特性以及与C#的比较
- C#的诞生及与Java的比较
- C#与Java的比较
- J2EE vs. NET, Java vs. C#:比较公正的评价