日期:2014-05-18  浏览次数:20785 次

c#与java对照

c#基本类型转换:System.convert()


重大不同是:

???? java对类及类成员默认的访问级别是:package
?????c#默认一切为私有的private。
?????c#的internal对应于java的package

?

?

???? c#的接口成员无域,所有方法默认为public,但不能带public

????? 派生类的成员覆盖基类的成员:用new

?

c#类相关的修饰符:
???? 类默认public
???? 属性,方法,性质等默认private?


c#的override
??????? override用于abstract或virtual方法的override


关于override:override的主法是父类或子类实例化后能访问到的方法,
如果是私有的方法,override则无任何意义,因此,在c#里,private
方法即使重复不算override,但是在java里,可能算。

c#和java关于override的规则不一样的:(如果两个方法签名一样)
c#:但是如果两个方法完全一样并且都是private,则无意义,不算override(此时加了new 则出报错。),至少有一方实例后要能访问得到。
java:如果两个方法的签名一样,则子类的访问修饰符必须大于父类的访问修饰符,否则就会不能正常形成override,则会报错,但c#不会出现。


c#的类中构造函数调用构造函数
?struct Point {
  public int X, Y;
  public Point(int x, int y);
  public Point(Point pt) : Point(pt.X, pt.Y) { } // 可以,C# 允许
  };

这种语法很变态!在java中只要用this即可。