學習啦 > 生活課堂 > 生活小常識 > struct和class的區(qū)別

struct和class的區(qū)別

時間: 志峰887 分享

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ū)別”的人還看了:

1.類和結(jié)構(gòu)的區(qū)別

2.c中class的用法

3.實施工程師面試題及參考答案

4.Linux find命令常見用法

1784286