zoukankan      html  css  js  c++  java
  • java与c#的语法区别详细介绍(转)

    做了几年的.net开发,最近在学java,总结一下基础语法区别

    1,命名空间与包
    C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace)
    Java中与此对应的东西叫做包(package)
    2,类的访问控制方面的不同
    C#只有两种:public和默认(同internal)
    public能被所有的类(同项目中和不同项目中)访问
    internal(在class关键字前不加控制符时默认为internal),表明类只能在同一项目中访问
    Java也只有两种:public和默认
    public能被所有的类访问
    默认(在class关键字前不加控制符时)只能被同一包中的所有类访问
    3,类成员的访问控制
    C#中有四种:public,protected,private(默认),internal(注意这里internal和默认是不同的)
    public能被所有的类访问
    protected只能被子类访问
    private(也即不写任何控制符时的默认情况下)只能类内部访问
    internal能被同一项目中的类访问
    Java也有四种:public,protected,private和默认
    public能被所有的类访问
    protected既能被同一个中的其他类访问,也可以被不同包中的子类访问
    private只能在类内部使用
    默认可以被这个包中的其他类访问,如果一个子类与父类位于不同的包中,子类也不能访问父类中的默认访问控制成员
    4,C#中类的继承用通过冒号:实现,在Java中用extends
    C#中实现接口通过冒号:实现,在Java中用implements
    C#中密封类用sealed实现,在Java中用final
    C#中常数用const实现,在Java中用final
    C#中属性用set,get代码块实现,在Java中一般用类似于C#中的字段代表属性,或者用setter,getter构造器实现
    C#中有部分类(partial)的概念,Java中没有
    C#中有readonly修饰属性只读,Java中没有
    C#中有virtual和override修饰虚方法和重写方法,Java中没有,Java中默认父类中的方法都是virtual的
    Java中有static{},synchroized{}代码块的概念,C#中没有
    Java中有标签(如labelA:)的概念,C#中没有
    C#中子类调用父类的方法用base.method(),Java中用super.method()
    C#中用is来判断一个实例是否是某一个类的,Java中用instanceof
    C#中用foreach(int i in array)来对数组中每一个元素的遍历,Java中用for(int i : array)

  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/zhujunfie/p/7650701.html
Copyright © 2011-2022 走看看