• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 知識大全 > 知識百科 > 百科知識 > 類有哪些基本特征及結構體的區別

    類有哪些基本特征及結構體的區別

    時間: 謝君787 分享

    類有哪些基本特征及結構體的區別

      類是面向對象程序設計中的概念,是面向對象編程的基礎。以下是學習啦小編為大家整理的類的基本特征,希望你們喜歡。

      類的簡介

      類的實質是一種數據類型,類似于int、char等基本類型,不同的是它是一種復雜的數據類型。因為它的本質是類型,而不是數據,所以不存在于內存中,不能被直接操作,只有被實例化為對象時,才會變得可操作。

      類是對現實生活中一類具有共同特征的事物的抽象。如果一個程序里提供的類型與應用中的概念有直接的對應,這個程序就會更容易理解,也更容易修改。一組經過很好選擇的用戶定義的類會使程序更簡潔。此外,它還能使各種形式的代碼分析更容易進行。特別地,它還會使編譯器有可能檢查對象的非法使用。

      類的內部封裝了方法,用于操作自身的成員。類是對某種對象的定義,具有行為(be-havior),它描述一個對象能夠做什么以及做的方法(method),它們是可以對這個對象進行操作的程序和過程。它包含有關對象行為方式的信息,包括它的名稱、實現操作的函數和實現屬性的數據。

      類的構成包括數據成員和成員函數。數據成員對應類的屬性,類的數據成員也是一種數據類型,并不需要分配內存。成員函數則用于操作類的各項屬性,是一個類具有的特有的操作,比如“學生”可以“上課”,而“水果”則不能。類和外界發生交互的操作稱為接口。

      類的三大特性

      封裝性

      將數據和操作封裝為一個有機的整體,由于類中私有成員都是隱藏的,只向外部提供有限的接口,所以能夠保證內部的高內聚性和與外部的低耦合性。用者不必了解具體的實現細節,而只是要通過外部接口,以特定的訪問權限來使用類的成員,能夠增強安全性和簡化編程。

      繼承性

      繼承性更符合認知規律,使程序更易于理解,同時節省不必要的重復代碼。

      多態性

      同一操作作用于不同對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。

      類與結構體的區別

      在C++、C#語言中,class和struct都可以定義一個類,它們的區別如下:

      C#中,class是引用類型,繼承自System.Object類;struct是值類型,繼承自System.ValueType類,不具多態性。但是注意,System.ValueType是個引用類型。

      從職能觀點來看,class表現為行為;而struct常用于存儲數據。

      class支持繼承,可以繼承自類和接口;而struct沒有繼承性,struct不能從class繼承,也不能作為class的基類,但struct支持接口繼承。

      class可以聲明無參構造函數,可以聲明析構函數;而struct只能聲明帶參數構造函數,且不能聲明析構函數。因此,struct沒有自定義的默認無參構造函數,默認無參構造器只是簡單地把所有值初始化為它們的0等價值。

      Java/C#中,實例化時,class要使用new關鍵字;而struct可以不使用new關鍵字,如果不以new來實例化struct,則其所有的字段將處于未分配狀態,直到所有字段完成初始化,否則引用未賦值的字段會導致編譯錯誤。

      class可以實現抽象類(abstract),可以聲明抽象函數;而struct為抽象,也不能聲明抽象函數。

      class可以聲明protected成員、virtual成員、sealed成員和override成員;而struct不可以,但是值得注意的是,struct可以重載System.Object的3個虛方法,Equals()、ToString()和 GetHashTable()。

      class的對象復制分為淺拷貝和深拷貝,必須經過特別的方法來完成復制;而struct創建的對象復制簡單,可以直接以等號連接即可。

      class實例由垃圾回收機制來保證內存的回收處理;而struct變量使用完后立即自動解除內存分配。

      作為參數傳遞時,class變量是以按址方式傳遞;而struct變量是以按值方式傳遞的。

      我們可以簡單的理解,class是一個可以動的機器,有行為,有多態,有繼承;而struct就是個零件箱,組合了不同結構的零件。其實,class和struct最本質的區別就在于class是引用類型,內存分配于托管堆;而struct是值類型,內存分配于線程的堆棧上。由此差異,導致了上述所有的不同點。所以只有深刻的理解內存分配的相關內容,才能更好的駕馭。

      當然,使用class基本可以替代struct的任何場合,class后來居上。雖然在某些方面struct有性能方面的優勢,但是在面向對象編程里,基本是class橫行的天下。

      那么,有人不免會提出,既然class幾乎可以完全替代struct來實現所有的功能,那么struct還有存在的必要嗎?答案是,至少在以下情況下,鑒于性能上的考慮,我們應該考慮使用struct來代替class:

      實現一個主要用于存儲數據的結構時,可以考慮struct。

      struct變量占有堆棧的空間,因此只適用于數據量相對小的場合。

      struct數組具有更高的效率。

      類的主要詞性變化

      ◎ 類 lèi 〈動〉

      (1)相似;像 [resemble;be similar to]

      遂入,殺孟陽于床。曰:"非君也,不類。"--《左傳·莊公八年》

      不類前人。--《論衡·自紀》

      益奇而堅,其疏數偃仰,類智者所施設也。--唐·柳宗元《小石城山記》

      與張氏之吝書若不相類。-- 清·袁枚《黃生借書說》

      (2) 又

      令黃生貧類予,其借書亦類予。

      語類楚聲。-- 明·魏禧《大鐵椎傳》

      絕類彌勒。--明·魏學洢《核舟記》

      畫虎不成反類犬

      (3) 類比;類推 [analogy;reason by]義不殺少而殺眾,不可謂知類。--《墨子》

      (4) 又如:類推

      (5) 通"戾"。偏,不平 [bias]

      夫富貴者則類,傲之;夫貧賤者則求柔之;是非仁人之情也。--《荀子·不茍》

      ◎ 類 lèi 〈副〉

      大抵;大都 [generally;in the main;mostly]

      觀古今文人,類不護細行。--三國 魏·曹丕《與吳質書》

      走卒類士服。--宋· 司馬光《訓儉示康》


    看過“類的三大特性”的人還看了:

    1.什么是拓撲結構

    2.秋季種什么蔬菜

    3.什么是英語短語

    4.語文中什么是代詞

    5.常見的15種公文分類有哪些

    1963963 主站蜘蛛池模板: 老司机精品久久| 久久99精品久久久久久hb无码| 99久久综合狠狠综合久久| 福利视频1000| 小sao货水好多真紧h视频| 国产91无套剧情在线播放| 丰满上司的美乳| 美女裸体a级毛片| 恋老小说我和老市长| 动漫人物美女被吸乳羞羞动漫 | 久久图库99图库| 领导边摸边吃奶边做爽在线观看 | 2022国产成人精品福利网站| 污污的网站在线免费观看| 在线日韩av永久免费观看| 亚洲精品乱码久久久久久下载| 99re6在线视频精品免费下载| 欧美美女黄色片| 国产精品成人一区无码| 亚洲成人app| 另类欧美视频二区| 日韩人妻无码精品无码中文字幕| 国产成人久久精品二区三区| 久草网在线视频| 豪妇荡乳1一5白玉兰免费下载| 日本亚洲黄色片| 又粗又大又猛又爽免费视频| 中文字幕久久久久一区| 管家婆有哪些版本| 国产高清天干天天美女| 亚洲一区二区观看播放| 黄瓜视频在线观看视频| 我的初次内射欧美成人影视| 免费va人成视频网站全| 91精品导航在线网址免费| 最近免费中文字幕mv在线电影 | 91精品国产91久久久久| 欧洲一级毛片免费| 最好看免费中文字幕2019| 国产亚洲AV人片在线观看| 一级做a爱过程免费视|