java與c#的語(yǔ)法區(qū)別詳細(xì)介紹
更新時(shí)間:2012年11月26日 09:23:30 作者:
由C#轉(zhuǎn)入Java一段時(shí)間了,總結(jié)下個(gè)人認(rèn)為的Java同C#語(yǔ)法之間的不同之處,有不同意見之處還望各位海涵,剛學(xué)Java時(shí)覺得語(yǔ)法同C#大致是相同的(應(yīng)該說(shuō)C#同Java大致相同
由C#轉(zhuǎn)入Java一段時(shí)間了,總結(jié)下個(gè)人認(rèn)為的Java同C#語(yǔ)法之間的不同之處,有不同意見之處還望各位海涵
剛學(xué)Java時(shí)覺得語(yǔ)法同C#大致是相同的(應(yīng)該說(shuō)C#同Java大致相同,畢竟人家微軟的C#是有意模仿Java的語(yǔ)法習(xí)慣的)
比爾.蓋茨曾經(jīng)說(shuō)過(guò):“Java是最卓越的程序設(shè)計(jì)語(yǔ)言”
言歸正傳,下面探討Java同C#的語(yǔ)法不同之處。。。
1,命名空間與包
C#為了把實(shí)現(xiàn)相似功能的類組織在一起,引入了命名空間的概念(namespace)
Java中與此對(duì)應(yīng)的東西叫做包(package)
2,類的訪問(wèn)控制方面的不同
C#只有兩種:public和默認(rèn)(同internal)
public能被所有的類(同項(xiàng)目中和不同項(xiàng)目中)訪問(wèn)
internal(在class關(guān)鍵字前不加控制符時(shí)默認(rèn)為internal),表明類只能在同一項(xiàng)目中訪問(wèn)
Java也只有兩種:public和默認(rèn)
public能被所有的類訪問(wèn)
默認(rèn)(在class關(guān)鍵字前不加控制符時(shí))只能被同一包中的所有類訪問(wèn)
3,類成員的訪問(wèn)控制
C#中有四種:public,protected,private(默認(rèn)),internal(注意這里internal和默認(rèn)是不同的)
public能被所有的類訪問(wèn)
protected只能被子類訪問(wèn)
private(也即不寫任何控制符時(shí)的默認(rèn)情況下)只能類內(nèi)部訪問(wèn)
internal能被同一項(xiàng)目中的類訪問(wèn)
Java也有四種:public,protected,private和默認(rèn)
public能被所有的類訪問(wèn)
protected既能被同一個(gè)中的其他類訪問(wèn),也可以被不同包中的子類訪問(wèn)
private只能在類內(nèi)部使用
默認(rèn)可以被這個(gè)包中的其他類訪問(wèn),如果一個(gè)子類與父類位于不同的包中,子類也不能訪問(wèn)父類中的默認(rèn)訪問(wèn)控制成員
4,C#中類的繼承用通過(guò)冒號(hào):實(shí)現(xiàn),在Java中用extends
C#中實(shí)現(xiàn)接口通過(guò)冒號(hào):實(shí)現(xiàn),在Java中用implements
C#中密封類用sealed實(shí)現(xiàn),在Java中用final
C#中常數(shù)用const實(shí)現(xiàn),在Java中用final
C#中屬性用set,get代碼塊實(shí)現(xiàn),在Java中一般用類似于C#中的字段代表屬性,或者用setter,getter構(gòu)造器實(shí)現(xiàn)
C#中有部分類(partial)的概念,Java中沒有
C#中有readonly修飾屬性只讀,Java中沒有
C#中有virtual和override修飾虛方法和重寫方法,Java中沒有,Java中默認(rèn)父類中的方法都是virtual的
Java中有static{},synchroized{}代碼塊的概念,C#中沒有
Java中有標(biāo)簽(如labelA:)的概念,C#中沒有
C#中子類調(diào)用父類的方法用base.method(),Java中用super.method()
C#中用is來(lái)判斷一個(gè)實(shí)例是否是某一個(gè)類的,Java中用instanceof
C#中用foreach(int i in array)來(lái)對(duì)數(shù)組中每一個(gè)元素的遍歷,Java中用for(int i : array)
剛學(xué)Java時(shí)覺得語(yǔ)法同C#大致是相同的(應(yīng)該說(shuō)C#同Java大致相同,畢竟人家微軟的C#是有意模仿Java的語(yǔ)法習(xí)慣的)
比爾.蓋茨曾經(jīng)說(shuō)過(guò):“Java是最卓越的程序設(shè)計(jì)語(yǔ)言”
言歸正傳,下面探討Java同C#的語(yǔ)法不同之處。。。
1,命名空間與包
C#為了把實(shí)現(xiàn)相似功能的類組織在一起,引入了命名空間的概念(namespace)
Java中與此對(duì)應(yīng)的東西叫做包(package)
2,類的訪問(wèn)控制方面的不同
C#只有兩種:public和默認(rèn)(同internal)
public能被所有的類(同項(xiàng)目中和不同項(xiàng)目中)訪問(wèn)
internal(在class關(guān)鍵字前不加控制符時(shí)默認(rèn)為internal),表明類只能在同一項(xiàng)目中訪問(wèn)
Java也只有兩種:public和默認(rèn)
public能被所有的類訪問(wèn)
默認(rèn)(在class關(guān)鍵字前不加控制符時(shí))只能被同一包中的所有類訪問(wèn)
3,類成員的訪問(wèn)控制
C#中有四種:public,protected,private(默認(rèn)),internal(注意這里internal和默認(rèn)是不同的)
public能被所有的類訪問(wèn)
protected只能被子類訪問(wèn)
private(也即不寫任何控制符時(shí)的默認(rèn)情況下)只能類內(nèi)部訪問(wèn)
internal能被同一項(xiàng)目中的類訪問(wèn)
Java也有四種:public,protected,private和默認(rèn)
public能被所有的類訪問(wèn)
protected既能被同一個(gè)中的其他類訪問(wèn),也可以被不同包中的子類訪問(wèn)
private只能在類內(nèi)部使用
默認(rèn)可以被這個(gè)包中的其他類訪問(wèn),如果一個(gè)子類與父類位于不同的包中,子類也不能訪問(wèn)父類中的默認(rèn)訪問(wèn)控制成員
4,C#中類的繼承用通過(guò)冒號(hào):實(shí)現(xiàn),在Java中用extends
C#中實(shí)現(xiàn)接口通過(guò)冒號(hào):實(shí)現(xiàn),在Java中用implements
C#中密封類用sealed實(shí)現(xiàn),在Java中用final
C#中常數(shù)用const實(shí)現(xiàn),在Java中用final
C#中屬性用set,get代碼塊實(shí)現(xiàn),在Java中一般用類似于C#中的字段代表屬性,或者用setter,getter構(gòu)造器實(shí)現(xiàn)
C#中有部分類(partial)的概念,Java中沒有
C#中有readonly修飾屬性只讀,Java中沒有
C#中有virtual和override修飾虛方法和重寫方法,Java中沒有,Java中默認(rèn)父類中的方法都是virtual的
Java中有static{},synchroized{}代碼塊的概念,C#中沒有
Java中有標(biāo)簽(如labelA:)的概念,C#中沒有
C#中子類調(diào)用父類的方法用base.method(),Java中用super.method()
C#中用is來(lái)判斷一個(gè)實(shí)例是否是某一個(gè)類的,Java中用instanceof
C#中用foreach(int i in array)來(lái)對(duì)數(shù)組中每一個(gè)元素的遍歷,Java中用for(int i : array)
相關(guān)文章
使用JavaBean根據(jù)指定條件設(shè)置屬性值默認(rèn)值方式
這篇文章主要介紹了使用JavaBean根據(jù)指定條件設(shè)置屬性值默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
微服務(wù)mybatis?typehandler使用詳解(就這一篇夠了)
TypeHandler是MyBatis框架的核心組件,實(shí)現(xiàn)數(shù)據(jù)庫(kù)表字段類型和Java?數(shù)據(jù)類型之間的相互轉(zhuǎn)換,本文介紹通過(guò)實(shí)例代碼mybatis?typehandler使用,感興趣的朋友一起看看吧2024-02-02
Spring?Security自定義失敗處理器問(wèn)題
這篇文章主要介紹了Spring?Security自定義失敗處理器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
java對(duì)象轉(zhuǎn)換String類型的三種方法
在很多情況下我們都需要將一個(gè)對(duì)象轉(zhuǎn)換為String類型。一般來(lái)說(shuō)有三種方法可以實(shí)現(xiàn):Object.toString()、(String)Object、String.valueOf(Object)。下面對(duì)這三種方法一一分析2013-11-11
springboot驗(yàn)證碼的生成與驗(yàn)證的兩種方法
本文主要介紹了springboot驗(yàn)證碼的生成與驗(yàn)證的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
SpringBoot Entity中枚舉類型詳細(xì)使用介紹
本文介紹SpringBoot如何在Entity(DAO)中使用枚舉類型。(本文使用MyBatis-Plus)。在實(shí)際開發(fā)中,經(jīng)常會(huì)遇到表示類型或者狀態(tài)的情況,比如:有三種支付方式:微信、支付寶、銀聯(lián)。本文介紹如何這種場(chǎng)景的方案對(duì)比,并用實(shí)例來(lái)介紹如何用枚舉這種最優(yōu)雅的來(lái)表示2022-10-10
java調(diào)用opencv身份證號(hào)識(shí)別詳解
這篇文章主要為大家詳細(xì)介紹了java如何調(diào)用opencv實(shí)現(xiàn)身份證號(hào)的識(shí)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03

