由於本人編寫程序的經驗並不是相當的豐富,且對面向對象的理解還停留在知道原理而而不知道怎麼高效的去用的狀態下,所以這裡只簡單的介紹一下我的理解,面向對象編程猶如我們中華的文化博大精深,還需要繼續努力學習、練習、實踐之。
類的定義
Objective-C的類分為兩個文件,一個是.h文件一個是.m文件
.h文件存放類、函數聲明,類聲明用關鍵字@interface @end來聲明
.m文件存放類的具體實現,類實現使用關鍵字@implementation @end來實現
對象方法和類方法
聲明和實現一個類的函數,需要使用+或者-來用在函數的開始
+表示類的方法,相當於java中的靜態函數
-表示對象方法,對象實例化後才可以調用
類聲明:
#import <Foundation/Foundation.h>
@interface Student :NSObject{
}
@end
類實現:
#import "Student.h"
@implementation Dog
@end
類和對象的關系
一般的在面向對象的編程中有這麼一句話:萬物皆對象。當然,要在面向對象的編程過程中做到這一點,需要很豐富的代碼編寫經驗才行。
什麼是對象,舉個例子,你看到的一個人,一輛車,甚至是車上的一個輪子,輪子上的螺絲都可以當做一個對象,關鍵是你在編程的過程中怎麼去處理了,最後還是再來一句,萬物皆對象。
什麼是類:類就是提取對象中共性內容,對具體的抽象。如,一個班的同學,我們就可以提取這個班的同學的共性的內容成一個學生Student類,這個Student類都有學號、年齡、班級等等。在oc中就是用@interface定義,@Implementation實現的那個玩意,就是一個類。
在oc中對象是通過指針來聲明的,如Student *xiaoMing;
oc中對象的創建,使用alloc來創建一個對象,編譯器會給xiaoMing對象分配一個可用的內存,在堆內存中。然後需要對對象進行初始化即調用init方法,這樣這個對象才可以使用,如:Student *xiaoming = [Student alloc]init];
同一個類的每一個對象有不同的實例變量的存儲空間。
同一個類的每個對象共享該類的方法。
初始化方法的實現:
-(id)init
{
self = [super init];
if(self)
{
//init code
}
return self;
}
一般會這麼寫:
-(id)init
{
if(self = [super init];)
{
//init code
}
return self;
}
self指的是類對象本身,super指的是父類對象
子類的初始化方法必須調用父類的指定的初始化方法,通過向super發送相應的消息初始化父類。
[self calss];//獲取本類的名稱
[super class];//獲取父類的名稱