今天主要來分析一下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 < 18){
// 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