struct和class的區(qū)別
struct和class的區(qū)別
對于學java的同學,struct和class經(jīng)常會混淆,它們之間有什么區(qū)別呢?下面是學習啦小編為大家準備的struct和class的區(qū)別,希望大家喜歡!
class類是什么
Class類(在java.lang包中,Instances of the class Classrepresent classes and interfaces in a running Javaapplication):
在Java中,每個class都有一個相應(yīng)的Class對象。也就是說,當我們編寫一個類,編譯完成后,在生成的.class文件中,就會產(chǎn)生一個Class對象,用于表示這個類的類型信息。
struct類是什么
struct,C語言結(jié)構(gòu)體。通俗講就是打包封裝,把一些有共同特征(比如同屬于某一類事物的屬性)的變量封裝在內(nèi)部,通過一定方法訪問修改內(nèi)部變量。在實際問題中,一組數(shù)據(jù)往往具有不同的數(shù)據(jù)類型。例如在學生登記表中,姓名應(yīng)為字符型;學號可為整型或字符型;年齡應(yīng)為整型;性別應(yīng)為字符型;成績可為整型或?qū)嵭?,因為?shù)組中各元素的類型和長度都必須一致,以便于編譯系統(tǒng)處理,所以不能用一個數(shù)組來存放這一組數(shù)據(jù),為了解決這個問題,C語言中就給出了這種構(gòu)造數(shù)據(jù)的類型“結(jié)構(gòu)”,它相當于其它高級語言中的記錄。
struct和class的區(qū)別
class是引用類型,struct是值類型;
class可以繼承類、接口和被繼承,struct只能繼承接口,不能被繼承;
class有默認的無參構(gòu)造函數(shù),有析構(gòu)函數(shù),struct沒有默認的無參構(gòu)造函數(shù),且只能聲明有參的構(gòu)造函數(shù),沒有析構(gòu)函數(shù);
class可以使用abstract和sealed,有protected修飾符,struct不可以用abstract和sealed,沒有protected修飾符;
class必須使用new初始化,結(jié)構(gòu)可以不用new初始化;
class實例由垃圾回收機制來保證內(nèi)存的回收處理,而struct變量使用完后立即自動解除內(nèi)存分配;
從職能觀點來看,class表現(xiàn)為行為,而struct常用于存儲數(shù)據(jù);
作為參數(shù)傳遞時,class變量以按址方式傳遞,而struct變量是以按值方式傳遞的。
看了“struct和class的區(qū)別”的人還看了: