結(jié)構(gòu)和類的區(qū)別是什么以及構(gòu)造函數(shù)
結(jié)構(gòu)和類的區(qū)別是什么以及構(gòu)造函數(shù)
對于學(xué)計算機(jī)的學(xué)生,結(jié)構(gòu)和類的區(qū)別是必須了解的。它們的區(qū)別是什么呢?下面是學(xué)習(xí)啦小編為大家準(zhǔn)備的結(jié)構(gòu)和類的區(qū)別,希望大家喜歡!
傳說中的結(jié)構(gòu)與類
在高級語言編程里面我們都知道數(shù)據(jù)存儲結(jié)構(gòu)有多種,比如單個的簡單數(shù)據(jù)類型int、string、char,或則是使用數(shù)組存儲多個具有相同數(shù)據(jù)類型和語義的數(shù)據(jù)信息。但是在實際操作中我們操作的數(shù)據(jù)類型有很多,用以上兩種很多難于解決,于是就引出了今天要講的傳說中的結(jié)構(gòu)。說到結(jié)構(gòu)我們腦海中是不是有一個“類”的概念在飄,沒錯結(jié)構(gòu)和類十分的相似,結(jié)構(gòu)和類一樣可以包含數(shù)據(jù)和方法的定義,可以包含構(gòu)造函數(shù)、常量、變量、方法、屬性等等。但是它們也存在這些許不同,包括用法、定義以及數(shù)據(jù)類型各個方面。
結(jié)構(gòu)與類的區(qū)別
1.結(jié)構(gòu)的定義
1 [修飾符] struct [結(jié)構(gòu)名] [ : 接口名]
2 {
3 //結(jié)構(gòu)成員
4 }
2.結(jié)構(gòu)的構(gòu)造函數(shù)
1 public struct Test
2 {
3 public Test()
4 {
5 //此方法編譯不會通過,提示錯誤消息“結(jié)構(gòu)不能包含顯示的無參數(shù)構(gòu)造函數(shù)”
6 }
7 }
3.結(jié)構(gòu)的成員變量賦值
1 struct Test
2 {
3 static int x = 1;
4 static int y = x + 5;
5 //以下兩句編譯錯誤,在結(jié)構(gòu)中可以給結(jié)構(gòu)的靜態(tài)變量賦初值,但不允許給結(jié)構(gòu)的一個實例變量賦初值
6 int m = 2;
7 int n = m + 2;
8 }
4.創(chuàng)建對象的方法
使用new運算符來創(chuàng)建結(jié)構(gòu)對象
直接用結(jié)構(gòu)類型的變量來創(chuàng)建結(jié)構(gòu)對象
5.繼承
不允許結(jié)構(gòu)從另外一個結(jié)構(gòu)或類繼承
總結(jié)
1.結(jié)構(gòu)是一種值數(shù)據(jù)類型,而類是一種引用類型
2.在結(jié)構(gòu)中不允許定義無參數(shù)的構(gòu)造函數(shù)(編譯不會通過)
3.在結(jié)構(gòu)中可以給結(jié)構(gòu)的靜態(tài)變量賦初值,但不能給結(jié)構(gòu)的一個實例變量賦初值
4.創(chuàng)建結(jié)構(gòu)對象可以不使用new關(guān)鍵字,直接用結(jié)構(gòu)類型的變量來創(chuàng)建
5.不允許繼承(可以將結(jié)構(gòu)看成是密封的類)
猜你感興趣: