##1. 面向對象基本術語編程
##2. 類和對象函數
@interface
、@end
@interface Car : NSObject{ @public int wheels; // 屬性: 多少個輪子 int speed; // 屬性: 時速 } - (void)run;// 方法,跑 @end
1.成員變量
- @interface
的大括號{}中聲明的變量:wheels、speed - @interface
的大括號和函數的大括號是不同的 - 默認會初始化爲0設計
2.@public
@public
可讓Car對象的wheels和speed屬性被外界訪問指針
3.NSObject
加上:NSObject的目的是讓Car類具有建立對象的能力code
###2.二、類的實現對象
@implementation
、@end
// 類的實現 @implementation Car - (void) run { NSLog(@"%i個輪子,%i時速的車子跑起來了", wheels, speed); } @end
@interface
,只有@implementation
,也是能成功定義一個類的@implementation Car : NSObject { @public int wheels; // 多少個輪子 int speed; // 時速 } - (void) run { NSLog(@"%i個輪子,%i時速的車子跑起來了", wheels, speed); } @end
@implementation
中不能聲明和@interface
同樣的成員變量###2.三、建立對象繼承
Car *c = [Car new]; // [Car new]每次都會建立出新的對象,而且返回對象的地址,那麼就應該用一個指針變量保存對象的地址! c->wheels = 3;// 賦值屬性 c->speed = 300; [c run];// 調用方法
###2.四、常見錯誤內存
@end
@interface
和@implementation
嵌套###2.五、語法細節get
###2.六、面向對象封裝的好處編譯器
###2.七、OC方法和函數的區別
@interface
和@end
之間,只能實如今@implementation
和@end
之間。也就是說OC方法不能獨立於類存在###2.八、OC的方法注意
##3. 方法 ###3.一、不帶參數的方法
// 方法聲明 - (double)pi; // 方法實現 - (double)pi { return 3.14; }
###3.二、帶一個參數的方法
// 方法聲明 - (double)square:(double)number; // 方法實現 - (double)square:(double)number { return number * number; }
###3.三、帶多個參數的方法
// 方法聲明 - (double)sumOfNum1:(double)num1 andNum2:(double)num2; // 方法實現 - (double)sumOfNum1:(double)num1 andNum2:(double)num2 { return num1 + num2; }
###3.四、方法名注意
##4. 匿名對象
[Car new]->speed = 200;
[[Car new] run];
##5. set方法和get方法 ###5.一、set方法和get方法的使用場合 @public
的成員能夠被隨意賦值,應該使用set方法和get方法來管理成員的訪問(相似機場的安檢、水龍頭過濾,過濾掉不合理的東西),好比殭屍的生命值不能爲負數
###5.二、set方法
###5.三、get方法
###5.四、成員變量的命名規範
###5.五、代碼示例
#import <Foundation/Foundation.h> // 聲明 @interface Car : NSObject { int _wheels; // 輪子個數 } /*set方法*/ - (void) setWheels:(int)wheels; /*get方法*/ - (int) wheels; @end @implementation Car // set方法的實現 - (void) setWheels:(int)wheels { // 對外面傳進來的輪子數進行過濾 if (wheels<=0) { wheels = 1; } _wheels = wheels; } // get方法的實現 - (int) wheels { return _wheels; } @end
###5.六、封裝的好處
##6. 類方法 ###6.一、基本概念
直接能夠用類名來執行的方法(類自己會在內存中佔據存儲空間,裏面有類\對象方法列表)
###6.2類方法和對象方法對比
##7. self關鍵字 ###7.一、成員變量和局部變量同名
###7.二、使用細節
###7.三、常見錯誤
##8. 對象與函數參數
##9. 繼承 ###9.一、繼承的基本用法
###9.二、繼承的專業術語
superclass
subclass\subclasses
###9.三、繼承的細節
###9.四、super關鍵字
###9.五、繼承的好處
###9.六、繼承的使用場合
##10. 多態 ###10.一、多態的基本概念
###10.二、多態的體現
Person *p = [Student new]; p->age = 100; [p walk];
###10.三、多態的好處
###10.四、多態的侷限性
###10.五、多態的細節