下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.;Java和C#、C/C+的比較最近在看Java,但我之前已經(jīng)有了一年多C#開發(fā)的經(jīng)歷了。以前聽人說C#是怎么抄襲Java的語法,但最近自己的親身受就是C#是“拿來”了Java的很大一部分的思想,但覺得創(chuàng)新和改進也是不少的。本人也只是一個菜鳥,下面是本人隨便寫的一些東西,不具備權(quán)威性啊。1.Java的面向?qū)ο?,具體點說,就只有Primitive Type(原始類型)、Obejct(對象)、Object的Field(字段)和Obejct的Method(方法)這些可以操作的實際內(nèi)容了。相對來說,我覺得C#面向?qū)ο蟮膬?nèi)容要完善得多,C#中的對象可以擁有的東西可以有Field(字段)、Propert
2、y(屬性)、Method(方法)、Event(事件)、Delegate(委托)等。這比較符合現(xiàn)實的對象,C#可以對屬性像變量一樣賦值和取用,但內(nèi)部同時可能會引發(fā)相關(guān)的操作,而不用像Java得使用get/set函數(shù)既不直觀形象,也很麻煩。還有Java就沒有過事件這一說,但實際上事件在對象上時刻是發(fā)生的,C#中為對象增加了事件一概念,可以保證對象上發(fā)生的事件能夠被感興趣的對象接收得到。2.Java沒有運算符重載。3.Java中派生類必須顯式調(diào)用基類的帶參構(gòu)造函數(shù)(如果它只有帶參構(gòu)造函數(shù)的話)。并且寫法是寫在派生類構(gòu)造函數(shù)的第一行。還有,同一個Java類的構(gòu)造函數(shù)在相互調(diào)用時,也是在調(diào)用的構(gòu)造函數(shù)體
3、的第一行寫上被調(diào)用構(gòu)造函數(shù)語句。并且每個類的構(gòu)造函數(shù)需且僅需調(diào)用該類其他構(gòu)造函數(shù)或基類構(gòu)造函數(shù)一次且僅一次。省略不寫的時候,默認調(diào)用其基類的無參構(gòu)造函數(shù)。如果其基類沒有無參構(gòu)造函數(shù),就必須顯式調(diào)用基類的有參構(gòu)造函數(shù),否則會出現(xiàn)錯誤。C#中,對構(gòu)造函數(shù)調(diào)用的規(guī)定同Java,但其寫法和類之間繼承的寫法類似,雖然沒有必然關(guān)系,還是容易讓人聯(lián)想到,類只允許繼承自一個基類,所以類的每個構(gòu)造函數(shù)也只能調(diào)用一個構(gòu)造函數(shù)。語法是在構(gòu)造函數(shù)的定義的括號后面加冒號(:)再加base(argments)(對基類構(gòu)造函數(shù)的調(diào)用)或this(argments)(對自身構(gòu)造函數(shù)的調(diào)用)。如derivedClass(arg
4、s):base(argments)這樣的話,c#中不存在構(gòu)造函數(shù)放錯位置和多次調(diào)用的錯誤。4.Java類中的靜態(tài)成員可以用實例名去訪問,也可以用類名去訪問,但是C#中規(guī)定只能由類名去訪問。在這一點上,感覺C#要考慮得要更周到一些。畢竟有些屬性是屬于類而不屬于實例的。5.接口的定義與使用,區(qū)別如下:(1)Java中,虛方法前面可以添加public和abstract關(guān)鍵字(雖然加與不加效果是一樣的),C#強制,方法前面什么都不能加。其效果都是public和abstract。(2)Java中,可以在接口中定義字段,這些字段都是static和final的(無論是否加這些關(guān)鍵字),所以是只讀的。其字段的
5、值要在定義的時候初始化。但C#中的接口不允許有字段的定義,可以說在應(yīng)用上,算是一個不足吧,但這樣可能會提高編譯和運行的效率。但C#的接口中可以定義屬性(實際上還是函數(shù)而已)。(3)如果一個類實現(xiàn)了兩個接口,而恰巧兩個接口中含有相同簽名(不包括返回類型)的方法,二者返回類型相同或者不同。對于前種情況,Java中只會對兩個接口中相同簽名的方法實現(xiàn)一次,而且無論你是用類來調(diào)用,還是轉(zhuǎn)型為兩種接口來調(diào)用,調(diào)用到的都是同一個函數(shù)。對于簽名名相同,返回類型不同的情況,Java中是無法實現(xiàn)這兩個接口的。因為無法對虛函數(shù)進行覆寫。而對于這兩種情況,C#都是有實現(xiàn)方法的,它在實現(xiàn)兩個接口虛函數(shù)的時候,對相同簽名
6、的虛函數(shù)名前面加上接口的類型名,形成如:interfaceName.methodName(argument list)這樣的實現(xiàn)形式,我們把這種形式叫“變形”吧。當(dāng)然可以選擇對其中的一者或者兩者都進行這種變形。反正能夠區(qū)別二者就行了。這樣造成的結(jié)果就是,對“變形”函數(shù)的調(diào)用,不能再通過類的實例名來調(diào)用了,而是要轉(zhuǎn)型為接口之后才能調(diào)用。這也就解決了動態(tài)綁定的不確定性問題啊!(4)Java中接口可以內(nèi)嵌在class中,也可以嵌套在interface中。但c#只允許接口嵌套在class中,不能嵌套在其他interface中。6.關(guān)于類型可見性,尤其在內(nèi)隱類和嵌套接口的使用中,Java采用較為開放的策
7、略,對“擴大”可見性的行為,編譯器并不禁止,但是往往會導(dǎo)致有些方法或?qū)傩砸驗轭愋筒豢梢姸豢捎?。但是C#完全采用嚴格限制的做法,低訪問級的類型不能暴露給高訪問的對象。這樣可以保證所有可見的方法和屬性始終是可用的。比如:class A private class B /Implementation public B getB() return new B(); 其中g(shù)etB函數(shù),在Java中能夠通過編譯,但在類中是無法正常應(yīng)用的。但在C#中是不能正常通過編譯的。7.Java中有所謂的初始化塊,即有靜態(tài)初始化塊和實例成員初始化塊,但是C#中沒有。Java中的初始化塊的樣子就像下面這個樣子:clas
8、s A int xx; static int yy; /下面就實例初始化塊 xx = 56; System.out.println(Instance initialization!); /下面是靜態(tài)初始化塊 static yy = 323; System.out.println(static initialization!); 每個類可以有多個實例和靜態(tài)初始化塊,其運行分別是在靜態(tài)和實例成員初始化時進行的,順序和是按成員出現(xiàn)的順序。8.內(nèi)隱類與匿名類:(1)Java中有匿名類,但是C#沒有;(2)Java中的內(nèi)隱類分成兩種:靜態(tài)內(nèi)隱類和非靜態(tài)內(nèi)隱類。其中非靜態(tài)內(nèi)隱類可以訪問外覆類的所有成員,包括實例成員,但它不能有靜態(tài)成員。這也就決定了非靜態(tài)內(nèi)隱內(nèi)是要由外覆類的實例產(chǎn)生的。比如A類中有內(nèi)隱類B。則B的實例化語法就是:A.B b = (new A().new B();或者寫成:A a = new A();A.B = a.new B();語法是不是很奇怪啊!一般Java不用這種語法來產(chǎn)生非靜態(tài)內(nèi)隱類,而是在外覆類中用一個特定方法,在這個方法中實例化非靜態(tài)內(nèi)隱類,然后以內(nèi)隱類的父類的類型或是其某一個接口的類型返回之。這樣達到封
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:進一步全面深化改革推進中國式現(xiàn)代化的學(xué)理性研究
- 課題申報參考:建設(shè)用地減量化的空間優(yōu)化效應(yīng)、機制與政策優(yōu)化研究
- 2025年erp沙盤模擬學(xué)習(xí)心得(3篇)
- 2025版投資協(xié)議補充協(xié)議:產(chǎn)業(yè)鏈整合投資合作補充協(xié)議3篇
- 2025年度個性化定制汽車租賃合同書4篇
- 二零二五版漫畫連載網(wǎng)絡(luò)平臺版權(quán)合作協(xié)議4篇
- 2025年汕尾貨車從業(yè)資格證考什么
- 2025年食堂承包經(jīng)營食品安全風(fēng)險評估與防控合同3篇
- 二零二五年度城市公交車輛掛靠經(jīng)營許可合同4篇
- 二零二五年度廠房污水處理及排放合同匯編3篇
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會課件
- 2025版高考物理復(fù)習(xí)知識清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標準版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報告2024
- 反走私課件完整版本
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
- 【可行性報告】2023年電動自行車行業(yè)項目可行性分析報告
- 臨床見習(xí)教案COPD地診療教案
評論
0/150
提交評論