今天主要來分析一下OC的類和對象
-
面向過程的語言和面向對象的語言
我們知道,C語言和OC語言最大的差別在于,一個是面向過程的語言,一個是面向對象的語言。
兩者的概念分别是:
面向過程的語言就是分析出解決問題所需要的步驟,然後用函數将這些步驟一步一步的實作,使用的時候一個一個一次調用就可以了。
面向對象的語言時把構成問題的事務分解成各個對象,然後協調各個對象之間的聯系和通訊,建立對象的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。
而OC作為一個面向對象的語言,是以功能來劃分問題而不是步驟,比如同樣是繪制一個五子棋程式,如果要加入一個悔棋的功能
,OC隻需要對規則系統以及棋盤對象進行調整,而不需要去大幅度改動程式。
-
OC類的使用以及對象的使用
oc語言的特點(p4):
oc語言是c語言的超集
oc語言具備完善的面向對象的特征
oc有個運作時系統(runtime)
建立類我們可以通過command鍵加n鍵選擇第一個來快速實作
頭檔案要用雙引号引入自定義的類檔案。
這是一個聲明檔案的例子
```
#import "<#header#>" //導入自定義類的頭檔案
#import<header> //導入ios架構類庫裡類的頭檔案
建立成功後,我們會發現,類分為一個聲明檔案和一個實作檔案,聲明檔案用于聲明類裡面的對象以及類裡面的相關方法
@interface student : NSObject //在oc中繼承的文法“類名:父類名”
{
//成員變量
//用來定義類的屬性
@public
NSString *_name;
// @protected
NSInteger *_age;
@private
NSString *_hobby;
@protected
NSString *_address;
/*
屬性的作用域
@public 公開的,任何類的方法都可以通路
@protected 受保護的,隻有類本身和類的子類可以通路
@private 私有的,隻有類的本身可以通路
*/
}
//方法聲明
/*
減号(-)表明了該方法是執行個體方法,類方法則用加号(+)。
void表示無傳回值類型,其他的類型還有
NSString、NSInteger,CGFloat、、、
*/
-(void)sayHello;
-(NSString *)eatlunch;
+(NSString *)playGame;
@end
這是一個實作檔案的例子
//@implementation 和 @end 實作檔案的開始和結束,在其中實作接口檔案中聲明的方法。
@implementation student
-(void)sayHello{
NSLog(@"Hello everybody!!!");
}
-(NSString *)eatlunch{
if(_age < ){
// return @"今晚有空吃飯嗎";
return [NSString stringWithFormat:@"%@小姐,今晚有空吃飯嗎",_name];
}
else{
return [NSString stringWithFormat:@"%@小姐,今晚我沒空吃飯",_name];
}
}
+(NSString *)playGame{
return @"play lol";
// if( _hobby ==game){
// return [NSString stringWithFormat:@"%@小姐,看來你也是一個愛玩遊戲的人",_name];
// }
// else{
// return[NSString stringWithFormat:@"%@小姐,看來你是一個認真學習的人",_name];
// }
}
@end