在理解類和結構之間的區別之前,我們應該先瞭解一些與它們相關的基本概念。如果不理解概念,就很難理解兩者之間的區別。
這是與面向物件程式設計相關的兩個重要概念,它們構成了構建函式和向其他函式傳遞資料的基礎。為了更好地理解,我們可以把它與現實生活中的例子聯絡起來。一個類可以被視為一個商店,而一個物件可以是任何一個單獨的、特定的商店,如雜貨店、文具店、水果店等。所有物件都共享主類——商店——的共同屬性,反過來,這些物件也可以透過物件擁有自己的專有屬性,如特定的設計、照明等,我們可以實際使用這個類;它們構成類的例項。
類的語法
Class Store {
public string things;
public string design;
}
物件的語法
Store grocery = new Store();
Store Stationery = new Store();
一個結構只包含資料,因此它有助於透過結構物件來構建各個資料需求。與類不同,它缺少函式。其語法如下:
struct grocery_entrance{
char entrance_name[50];
int entrance_size;
} grocery_entrance;
所有商店都可以使用結構'入口'與個人的名稱和大小。
這類似於兒子繼承父親的財產,反過來,兒子也可以增加自己的一些其他財產。類可以是基類,也可以是派生類,其中前者可以作為基類來形成後者。派生類除了從基類獲得的屬性外,很少為自己新增其他屬性。考慮上述示例時,雜貨店仍然可以派生到特定的雜貨店,例如XYZ雜貨店。
既然我們已經熟悉了基本概念,我們就可以深入瞭解類和結構之間的實際區別了。
Demo obj=新建Demo();
這意味著在建立類的物件時必須使用關鍵字“new”。在建立結構的物件時,這不是必需的。看看它們的語法:
演示物件;
即使沒有“new”關鍵字,它也能完美地工作。
由於類在一起處理資料和函式方面更加靈活,所以當所使用的物件複雜且龐大時,我們可以使用它。在我們的示例中,Mall可以使用類“store”以更好的方式表示系統。然而,結構僅限於較小的物件,因為它們的效率相對低於類。因此,如果你自己設計一個商店,結構是更好的選擇。
您可能聽說過術語“裝箱”和“取消裝箱”將結構轉換為類,反之亦然。雖然這些都是有效的過程,以幫助我們在轉換,他們應該小心處理。由於這直接影響到記憶體的位置,對系統的效能有很大的影響。此外,它還會影響垃圾收集過程,導致整個系統效率低下。因此,僅在需要時才使用這些轉換。
讓我們以表格的形式來看上述差異。
序號 | 概念 | 差異 | |
等級 | 結構 | ||
1 | 可重用性 | 完全可重覆使用 | 不可重覆使用 |
2 | 能見度 | 類的所有函式對其物件都是可見的 | 結構的物件的資料對同一結構的其他物件不可見 |
三 | 按引用傳遞和按值傳遞 | 使用按引用傳遞 | 使用傳遞值 |
4 | 繼承 | 一個類的函式可以被它的子類繼承;允許繼承 | 從不允許繼承 |
5 | 預設可見性 | 預設情況下,類的所有成員都是私有的 | 預設情況下,結構的所有成員都是公共的 |
6 | 空時的大小 | 空類的大小為1位元組 | 空結構的大小為0位元組 |
7 | 垃圾收集 | 由於它使用按引用傳遞,所以可以進行垃圾收集 | 因為它使用傳遞值,所以不可能進行垃圾收集 |
8 | 記憶體管理 | 垃圾收集過程的簡單性有助於有效的記憶體管理 | 缺少垃圾收**導致記憶體管理不善 |
9 | 施工人員 | 允許所有型別的建構函式,例如帶引數或不帶引數 | 只允許引數化建構函式 |
10 | 解構函式 | 我可以用它 | 不能使用它 |
11 | 成員變數初始化 | 允許直接初始化成員變數 | 不允許成員變數的直接word初始化 |
12 | 物件建立 | 在建立物件時必須使用關鍵字“new” | 在物件建立期間使用關鍵字“new”是可選的 |
13 | 何時使用? | 對於需要繼承的較大和複雜物件更好 | 對於較小和更簡單的物件,繼承不那麼重要。 |
我們幾乎涵蓋了類和結構之間的所有差異,如果您覺得缺少某些內容,請告訴我們。讓我們一起學習,充分利用這些知識!
...系統功能的高階理解。有兩種主要的UML建模型別。它們是結構建模和行為建模。結構化建模描述了系統的靜態特性。另一方面,行為建模描述了系統的動態特性。類圖和物件圖是兩種結構化建模UML圖。 目錄 1. 概述和主要區別 2. ...
...兩種方法可以訪問結構的成員。即使用成員運算子(.)和結構指標運算子(->)。可以使用結構“變數”名稱訪問成員。成員名稱。如果程式設計師想訪問學生2的名字,那麼他可以把語句寫成printf(student2.student_namename); 參...
...用者還可以建立值型別。兩種這樣的使用者定義值型別是結構和列舉。結構包含不同型別的資料。它類似於一個類。“struct”關鍵字用於宣告結構變數。結構示例如下。 僱員結構{ 公共國際機場; 公共字串名稱; } 列舉用於提...
...但在任何方法之外。 班(class)和例項變數(instance variables)的區別 類變數與例項變數 類變數是指只有一個變數副本與類的所有例項共享的變數。 當類的每個例項都有自己的變數副本時,例項變數就是變數。 聯想 類...
...資料型別不儲存實際資料,但它們包含對變數的引用。類和結構儲存資料。本文討論了C#中類與結構的區別。C中類和結構的關鍵區別在於,類是引用型別的資料型別,而結構是值型別的資料型別。 目錄 1. 概述和主要區別 2. 什麼...
班(class)和介面(interface)的區別 面向物件程式設計(OOP)是軟體開發中的一種常見正規化。它有助於使用類和物件為程式設計帶來真實的場景。類是建立物件的藍圖。程式設計師可以用屬性和方法建立一個類。學生和老師是客...
無定形(amorphous)和結晶聚合物(crystalline polymers)的區別 “聚合物”一詞可以定義為由大量重複單元透過化學鍵連線而成的材料。一個單一的聚合物分子可能包含數百萬個小分子或重複單元,這些單元被稱為單體。聚合物是具有...
詞彙(lexical)和結構歧義(structural ambiguity)的區別 歧義是指有一種以上的解釋。如果一個詞、短語或句子可以用一個以上的意思來解釋,它就會變得模稜兩可。歧義可以分為詞彙歧義和結構歧義兩大類。當一個詞的詞義不止一個...
...們明白,採取政治行動,例如革命來推翻普遍存在的社會結構是至關重要的。 階級衝突 什麼是虛假意識(false c***ciousness)? 現在讓我們關注一下虛假意識。虛假意識是指個體對自己在社會中的地位所具有的扭曲的認識形式。馬克...
...結構主義者關注這些變化。 後結構主義(post-structurali**)和結構主義(structurali**)的區別 •結構主義強調理解各種現象的結構的存在。 •後結構主義可以理解為對結構主義的批判。 •後結構主義被認為是歷史主義,而結構主義被...