天天看點

OC類和對象基本知識

類:是對事物行為和特征的抽象 

對象:是類的一個執行個體 類和對象的概念就是面向對象程式設計的核心

建立一個執行個體化: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;

繼續閱讀