類:是對事物行為和特征的抽象
對象:是類的一個執行個體 類和對象的概念就是面向對象程式設計的核心
建立一個執行個體化:Person *p1 = [[Person alloc] init]; // alloc 在記憶體上開辟空間 init 對開辟的空間進行初始化操作 alloc 這個方法 是來自于NSObject 這個基類的類方法 指的是開辟空間 init 也是來自于NSobject的方法 給一個初始值 OC裡面規定 方法的調用使用[ ] 實際上這是一個發送消息的機制 [reciver(消息的接收者) message(消息名)]; 一般情況下我們建立一個類,類名和建立的類檔案名保持一緻 并且一個檔案裡面隻放一個類
NSObject類是一個抽象類 Foundation架構下,大多數類都繼承與NSObject類 類檔案包含連個部分 一 類的接口部分 @interface Person :NSObject @end結尾 一般寫在.h檔案中 二 實作部分 @implementation 為關鍵字 @end結尾 一般寫在.m檔案中
接口部分放類的特征和行為的聲明 花括号中放執行個體變量,用來闡述類的特征 修飾執行個體變量的可見度的關鍵字 @protected 受保護的執行個體變量 類内可以使用,類外不可以使用(預設情況下的執行個體變量用@protected)----也是最常用修飾方式 @public 公共的 類内類外都可以使用 — 用的比較少,因為它違背了面向對象封裝的特性 @private 私有的 類内可以使用,類外不能使用,與@protected差別就是它修飾的變量不能被子類繼承 { NSString *_name; // 執行個體變量 = 類型 + 名字 (一般以下劃線開頭命名)
NSString *_gender;
NSInteger _age; // NSInteger就是C語言中的long類型的重定義
CGFloat _height; // CGFloat就是double }
- (void)speak; // - 是一個執行個體方法 ,需要執行個體去調用(動态方法).
+ (void)eat; // + 表示這是一個類方法,以後要用類去調用(靜态方法).
// 寫執行個體變量的setter跟getter方法.
// setter 方法可以給執行個體變量設定值 getter 方法可以獲得執行個體變量的值
// 給setter 跟getter 方法命名的時候最好setter 方法以set開頭 後面跟上咱們要改變的執行個體變量
- (void)setName: (NSString *)name;
// getter 方法的命名: 傳回值類型跟執行個體變量的傳回值類型保持一緻 後面跟上執行個體變量的名字 - (NSString *)name;
{ @private
NSString *_brand; // 系統内部是使用指針進行操作的,是以字元串類型的需要加 *
NSString *_color;
NSInteger _price; // 非對象類型,不能加*
CGFloat _speed;
}
// @public 共有的雷内和類外都可以使用執行個體變量
// @protected 受保護的 類内可以使用,類外無法使用執行個體變量,如果我們要對執行個體變量進行取值和指派,我們可以使用 setter 和 getter 方法 子類會繼承父類所有的執行個體變量和方法,子類可以使用這些執行個體變量
// @private 類内可以使用,類外無法使用.子類無法繼承父類的執行個體變量.----不常用,它不太符合面向對象思想中 繼承 的特性
- (void)run;
+ (void)doufeng;
- (void)setBrand:(NSString *)name;
- (NSString *)brand;
- (void)setColor:(NSString *)color;
- (NSString *)color;
- (void)setPrice:(NSInteger)price;
- (NSInteger)price;
- (void)setSpeed:(CGFloat)speed;
- (CGFloat)speed;
// 如果要傳多個參數在方法中,需要用 : 分開, : 後面寫上參數的類型和參數的名字
- (void)setBrand:(NSString *)brand color: (NSString *)color price: (NSInteger)price speed: (CGFloat)speed;
- (void)makeColor : (NSString *)color makeMoney : (NSInteger)money;
- (void)changeColor:(NSString *)color addMoney:(NSInteger)money;