中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#和JAVA中面向對象語法之間有什么區別

發布時間:2020-07-13 10:54:59 來源:億速云 閱讀:169 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關C#和JAVA中面向對象語法之間有什么區別,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

面向對象是一種開發思想,最應該記住的一句話是萬物皆對象。為了讓程序更好的被理解和編寫,把現實生活中描述事物的方式和思路融合進入,就成了面向對象的思想。把生活中的事物融合進程序中那么就需要描述,描述分為特征和行為兩方面,而不同類別的對象特征和行為具有巨大的差異,為了更好的制定描述每一類事物的方式,那么提取來一個編程世界中的類的概念,等同于生活中的類型的概念,每一種事物都應該是有類型的。然后生活中的事物按不同的方面進行分類的話,可以劃入不同的類別,所有編程中的類也是一個公說公有理,婆說婆有理的玩意,相當的抽象,具有相當的不確定性和隨意性。

  類的構成:

  Java中的類,包含屬性和方法。屬性即類中的變量,可分靜態變量、實例變量(全局變量)、局部變量(存在于方法中,聲明周期僅限于該方法的調用階段)

  C#中的類,包含字段、屬性和方法。字段對應java中的屬性,C#中的屬性對象java中的get和set訪問器,是對字段的封裝,方法一樣,都是描述行為。

  類成員的調用:

  實例成員由對象調用。靜態成員由類調用。但是在java中靜態成員也可以被實例調用,相當于班上的每一個學生都可以任意的支配班費了,很不好的一個問題。C#在這方面嚴格限制了,靜態成員只能有類進行調用。

  三大特性-封裝

  封裝:為了隱藏內部的實現細節,達到對數據安全性的保護和代碼重用的效果的一種手段。

  封裝無處不在,看似簡單卻可無限延伸。并沒有一個明確的關鍵字來表示封裝。既然是思想,是手段,所有在java中和c#中是沒有語法區別的。僅僅是他們在借助訪問修飾符來達到封裝的效果時,兩種語言的訪問修飾符是不一樣的。

  Java中:

  private:私有的,僅內部可以訪問

  dufault:默認的,同一包的內部可以訪問。

  protected:受保護的,同一包中或者是不同包的子類中可以訪問。

  public:公共的,任何地方可以訪問。

  特點:有明確的大小統屬關系:private < default < protected < public

  C#中(引入程序集的概念。命名空間類似于java中的包,但它是邏輯分組不同于java中的包是物理分組,程序集類似于一個項目):

  private:私有的,僅內部可以訪問。

  intenal:內部的,同一程序集的內部可以訪問,同default。

  protected:受保護的,子類中可以訪問,和java中protected是不同的,此處范圍要小些,同程序集的非子類不能訪問。

  proteted intenal:是intenal和protected訪問范圍的并集。

  public:公共的,任何地方可以訪問。

  特點:沒有明確的大小統屬關系,intenal和protected的訪問范圍大小是分不清的。



三大特性-繼承   
繼承:目的是為了讓一個類擁有另一個類的屬性和方法。

  Java中:使用extends表示使用繼承

  重寫的要求:a、方法名、返回值類型、參數相同;b、訪問修飾符訪問范圍要大于或等于父類方法訪問修飾符;

  訪問父類成員:使用super關鍵字,可使用super(參數);在構造方法中指定調用父類一個構造方法。

  C#中:使用:表示使用繼承

  重寫的要求:a、方法名、返回值類型、參數、訪問修飾符相同;b、父類方法被virtual修飾,子類方法被override修飾

  訪問父類成功:使用base關鍵字,在構造方法后使用:base(參數);指定調用父類構造方法,base不能使用在靜態環境中,不能調用父類靜態成員。

  覆蓋:使用new關鍵字。在c#中引入覆蓋的內容,對父類的非virtual方法,也就是不可重寫的方法,使用覆蓋,可以覆蓋掉父類的方法。對覆蓋我的看法是為了彌補必須被virtual修飾的方法才能重寫這個限制可能帶來的問題,但是能不用就不用,覆蓋意義不大,或者說是我還沒有真切體會到覆蓋的實際作用和使用場合,有高人可以評論解惑。

  判斷是否重寫成功的依據:使用父類的引用指向子類的對象,如果該方法調用的是父類方法說明重寫不成功,如果調用到子類方法,說明重寫成功。

  三大特性-多態

  多態:同一種行為的多種存在形態。表現形式有:重載、重寫。

  重載要求:a、同一類中;b、方法名相同;c、參數不同(參數個數、類型、順序)。

  調用時根據傳入的參數來決定調用到哪一方法。

  抽象類和接口

  抽象類:使用abstract修飾的類稱為抽象類。

  來源:在我看來,抽象類的來源是值得仔細琢磨一下,有利于加深理解。現實生活中存在很多這樣的問題,也就是我們知道這一類事物都會做這個動作(方法),但是并不知道它如何去做,比如我們都知道動物為動,但是每個動物你不知道它如何去動。這個時候定義這個Animal類時,就需要一個move方法,只有方法頭(描述會做什么事情),沒有方法體(描述如何去做這件事情),那么這個方法比較特殊,我們就標記為抽象方法,使用abstract修飾。

  那么Animal類中有了抽象方法,假如你實例化了Animal類,當你調用move方法時,會出現什么樣的問題呢?未知,因為它并沒有描述如何去做。所以為了避免出現這種未知的情況,比如把Animal類定義為抽象類,顯著特點就是不能實例化。一個不能實例化的類,他的非靜態成員是不可被調用的,那么這樣的類存在的意義在于什么呢?

  所以總結:抽象類存在的意義在于被繼承。抽象類是為了抽象方法而存在的,有構造方法卻不能被實例化。語法上java和c#在這方面是一樣的,不再細說。

  接口:制定的一組規則和規范,讓實現類都滿足這個規則和規范,在實際應用中能很大程序增加程序的靈活性。面向接口編程,我的理解也不是特別深,也不是我一兩句可以講清楚。有高人可以在后面貼貼自己的心得,學習學習。

  區別:C#中,實現類如果沒有實現接口中所有的方法,則比如把自己定義為抽象類并且把未實現的方法重新抄寫一遍定義為抽象方法。

  總結

  一直以來是做java開發的,教學的需要才學習c#,有相通之處,學起來很快。這里僅僅關注語法,對于大牛們都在搞協議,搞底層,是看不上這個的。

關于C#和JAVA中面向對象語法之間有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于田县| 景德镇市| 同仁县| 明光市| 海南省| 上林县| 清丰县| 涿鹿县| 威宁| 罗甸县| 黄骅市| 大新县| 东山县| 甘泉县| 海门市| 广河县| 永嘉县| 福贡县| 西宁市| 大城县| 山东省| 鹰潭市| 雅安市| 双柏县| 旬阳县| 蕉岭县| 恩施市| 泰和县| 定州市| 台东县| 武定县| 韩城市| 青岛市| 杭锦旗| 区。| 美姑县| 临猗县| 旅游| 田东县| 宁波市| 丽江市|