java和C#面向对象的区别
生活随笔
收集整理的這篇文章主要介紹了
java和C#面向对象的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 問題:C#中的構造函數和java的構造函數一樣嗎? |
.net的項目中,寫實體Entity屬性時,經常會為每一個屬性寫一對get和set方法,在用到這個實體或是一個類時,通過new實例化一個對象,并沒有很強調構造方法
而java中很強調構造方法
-
通過構造方法來構建成自己的一個新對象
-
是java中用來初始化對象的函數
-
與類同名,且沒有返回值
-
如果不寫,會調用系統默認構造函數
-
一旦寫了,就會將默認的覆蓋,只能用自己寫的構造函數 。
構造函數的好處:將內容傳遞給堆內存后,在棧內存中消失,再實例化的時候,還是會調用這個構造函數的
在java中,繼承中的構造函數也是有規則 -
子類構造必須調用父類的構造函數,通過在自己的構造方法中聲明super來調用父類的構造函數,必須寫在子類所有構造方法之前
-
子類可以使用this關鍵字調用本類外的構造方法
-
子類中沒有出現父類的構造方法,會默認調用父類無參的構造方法
-
整個過程是內存復制來復制去的過程,還是要弄懂它的內存解析過程
| 問題:C#中的繼承和java的繼承區別? |
C#中有將到關于繼承的東西,尤其在大話設計模式中,體現得很多很深。但當時更多的注重怎么用繼承來實現功能。 但java中的繼承,更多的是從內存解析的角度來看,父子類的成員變量分配。
| 問題:this如何處理成員變量和參數重名問題? |
比如說一個類它的屬性(靜態或動態)名稱和參數的名稱一致,在調用的時候,就不知道用的是參數還是類的成員變量,所以用this關鍵字,就可以區分它到底是參數還是成員變量,因為成員變量可以通過this.點出來,而參數是不可以的,這樣的話,它們之間進行傳值,就會區分不開,不會混淆了。
| 問題:包裝類 類似于C#中的? |
在C#中,不記得有包裝類這個東西
而在java中卻強調了這個包裝類,在java中只有4中8類基礎類型會被分配在棧內存上,其余都會被分配到堆內存上
若想要基礎類型分配到堆內存上,可以用基礎類型的包裝類實現。
| 問題:4種類的訪問權限? |
也叫四種權限修飾符
public protected private 置于類的成員定義前,用來限定其他對象對這個類的訪問
public default 用來修飾class類
- public都可以訪問這個類
- default 只有同一個包內部的類才可以訪問這個類
| 問題:instanceof? |
| 問題:為什么要定義一個接口? |
java不支持多重繼承,但現實世界又存在多重繼承的現象,所以通過接口實現多重繼承
多個無關的類可以實現同一接口,同樣的,一個類一個實現多個接口,這樣的話,實現多個接口就相當于實現多個繼承
接口相當于一個抽象類,這個類可以被多個類實現(繼承),從而解決了java中無法實現多重繼承的問題
接口中的抽象屬性只能是static final的,而抽象方法只能是public的
這樣,把一個類當做不同的對象,接口使得類暴露了部分方法
幫助完成多重繼承的邏輯,并和實現它的類之間實現多態性
| 問題:extends? |
繼承的關鍵詞
| 問題:java里關于異常的部分,真的很多,很充分? |
異常是什么?是程序運行期間出現的問題 出現了錯誤,java怎么處理? 在運行過程中,發生什么異常,java會生成一個什么樣的異常類對象,生成以后,就直接拋給java運行時系統,默認的處理是將異常類中包裝的信息直接打印出到命令行,控制臺上;你要想處理這種異常,只要逮住這種異常就可以了,也可以在拋給運行時系統之前,先逮住,做出相應得處理 必須有try,否則不能出現catch
- Throwable: 所有異常類的基類
- Error:系統的錯誤,虛擬機的錯誤,你的程序處理不了的錯誤
- Exception:可以處理的錯誤,
- RuntimeException:經常出現的異常,這種錯誤,可以catch,也可以不catch
關于多層catch的捕獲機制也有處理辦法,一層層的往外跳轉
而且必須先拋出小異常,再拋出大異常,否則編譯報錯
也可以自定義異常類
| 問題:基類的異常捕獲機制,不能放在子類的異常捕獲機制上面? |
必須先拋出小異常,再拋出大異常,否則編譯報錯
總結
以上是生活随笔為你收集整理的java和C#面向对象的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后勤问题怎么办。。。(求刊登)
- 下一篇: 【机器学习】RNN循环神经网络