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