類與結構體區別

結構體:

C語言容許用戶本身指定這樣一種數據結構,它由不一樣類型的數據組合成一個總體,以便引用,這些組合在一個總體中的數據是互相聯繫的,這樣的數據結構稱爲結構體,它至關於其它高級語言中記錄。
  聲明一個結構休類型的通常形式以下:
  struct 結構體名
  {成員列表};
  結構體名,用做結構體類型的標誌,它又稱 結構體標記,大括號內是該結構體中的各個成員,由它們組成一個結構體,對各成員都應進行類型聲明如:
  類型名 成員名;

 結構體使用:
  (1)先聲明結構體類型再定義變量名
  如上面已定義了一個結構體類型 struct student,能夠用它來定義變量。如:
  struct student  //結構體類型名
  student1, student2//結構體變量名
  定義了 student1, student2 爲 struct student 類型的變量。
  在定義告終構體變量後,系統會爲之分配內存單元。
  (2)它的做用與第一種方法相同,即定義了兩個 struct student 類型的變量 student1, student2 這種形式的定義的通常形式爲
  struct 結構體名
  {
  成員表列
  }變量名錶列;
  (3)直接定義結構類型變量
  其通常形式爲
  struct
  {
  成員表列
  }變量名錶列;
  即不出現結構體名。



類(class):
類是具備類似內部狀態和運動規律的實體的集合(或統稱、抽象)。類的概念來自於人們認識天然、認識社會的過程。在這一程中,人們主要使用兩種方法:由特殊到通常的概括法和由通常到特殊的演繹法。在概括的過程當中,咱們從一個個具體的事物中把共同的特徵抽取出來,造成一個通常的概念,這就是"歸類";如:昆蟲、獅子、爬行動物,由於它們都能動因此歸類爲動物。在演繹的過程當中咱們又把同類的事物,根據不一樣的特徵分紅不一樣的小類,這就是"分類";如動物->貓科動物->貓->大花貓等。對於一個具體的類,它有許多具體的個體,咱們就管這些個體叫作"對象"。類的內部狀態是指類集合中對象的共同狀態;類的運動規律是指類集合中對象的共同運動規律。如:博拉圖對人做以下定義:人是沒有毛能直立行走的動物。在博拉圖的定義中"人"是一個類,具備"沒有毛、直立行走"等一些區別於其它事物的共同特徵;而張3、李4、王5、流氓陳水扁等一個個具體的人,是"人"這個類的一個個"對象"。
對象(object):
即指現實世界中各類各樣的實體。它能夠指具體的事物也能夠指抽象的事物。如:整數一、二、三、流氓陳水扁、蘋果、飛機、規則、法律、法規、表單等等。每一個對象皆有本身的內部狀態和運動規律,如流氓陳水扁具備名字、身高、體重等內部狀態,具備吃飯、睡覺、打人、偷稅、漏稅等運動規律。在面向對象概念中咱們把對象的內部狀態稱爲屬性、運動規律成爲方法或事件。

一、類也是一個對象,是Class類型的對象,簡稱「類對象」,類名就表明着類對象,每一個類只有一個類對象。

二、Class類型的定義

typedef struct objc_class *Class;

根據類的定義來看其實類本事也是一個結構體

三、得到類對象的方式

    // 第一種方式 經過類名得到
    Class c = [Person class];
        
    // 第二種方式 經過類的對象得到
    Person *p = [[person alloc] init];
    Class c = [p class];

注意:根據第二條的定義Class已經包含了* 因此在使用的時候不須要再加*
四、調用類方法的方式

    // 第一種方式 經過類名調用類方法
    Person *p = [Person new];
        
    // 第二種方式 經過類對象名調用類方法
    Class c = [Person class];
    Person *p = [c new];


OC方法和函數的區別:
OC方法只能聲明在@interface和@end之間,只能實如今@implementation和@end之間。也就是說OC方法不能獨立於類存在
C函數不屬於類,跟類沒有聯繫,C函數只歸定義函數的文件全部
低級錯誤:方法有聲明,可是實現的時候寫成了函數


     OC中類方法必須使用+(加號)開頭。類方法是屬於類對象的,因此無需建立類的實例對象咱們就能夠直接使用它們。類方法中的self指的是這個類,在類方法中self只能調用這個類的類方法(包括這個類的全部的類方法均可以調用)。

     OC中對象方法必須使用-(減號)開頭。類方法必須由類的實例對象來調用,在類方法中能夠經過self指針訪問類的成員變量,也能夠調用類的對象方法(包括這個類的全部的對象方法均可以調用)。數據結構

相關文章
相關標籤/搜索