OC第二課,OC

來源:互聯網
上載者:User

OC第二課,OC

主要內容:執行個體變數可見度、方法

一、執行個體變數可見度

       public(共有的):執行個體變數可以在類的內部和外部使用

       protected(受保護的、預設的):執行個體變數只能在該類及其子類中使用

       private(私人的):執行個體對象只能在該類中使用

       所謂的內部是指:@interface .... @end之間

       樣本:

               @interface

                       @public                                 / /共有的,誰都能訪問

                        NSString  *_adress ;            / /地址

                        NSString  *_hobby ;             / /愛好

                       @protected                           / /受保護的、預設的,只能在該類及其子類中使用

                       NSString  *_name ;               / /姓名

                       NSString  *_age ;                  / /年齡

                       @private                               / /私人的只能在該類內部使用

                       NSString  *_gender ;            / /性別

               @end

        一般情況下,使用預設的受保護的 @protected

               為什麼呢?因為使用@public關鍵字暴漏了類內部的組件,違背了物件導向的 “ 封裝 ” 特性

        下面是使用@public、@protected、@private的區別


             如何在其他檔案中使用protected修飾的執行個體變數呢?

二、方法

       OC中有兩種方法:

            類方法:只能類使用,例如  +(id)alloc

                    注意:類方法中不能使用執行個體變數

            執行個體方法:只能對象使用,例如:-(void)sayHi


          方法名就是:去掉方法類型、返回值類型、參數類型、參數名和空格,剩下的就是方法名

                  例如:replaceObjectAtindex :withObject:這就是一個方法名

                  注意:1、類中不能出現相同的方法名

                             2、" : "標示參數,不能省略,有 " : "必須有參數

          賦值、取值方法

          樣本:

                  - (void)setName:(NSString  *)name;

                  - (NSString  *)getName;                 

                  

                  - (void)setName:(NSString  *)name

                  {

                            _name = name;

                  }

                  - (NSString  *)getName

                  {

                            return  _name;

                  }

          不過我們一般寫成這種方式(多參方式:簡介、省事)

          樣本:

                  - (void)setName:(NSString  *)name

                                setAge:(int)age

                            setHeight:(float)height ;

             

                  - (NSString  *)getName

                  {

                             return  _name;

                  }

                  - (int)getAge

                  {

                              return  _age;

                  }

                  - (float)getHeight 

                  {

                              return  _height;

                  }

                 注意:1、OC裡面,為執行個體變數賦值的方法稱為setter(設定器)

                            2、讀取執行個體變數值的方法稱作getter(訪問器)

                            3、setter方法可以把參數寫在一起(多參),但是擷取方法getter必須分開寫,一個參數一個getter方法

                            4、無論是setter還是getter內部操作的是執行個體變數,每一個執行個體變數都需要一對setter和getter方法

        方法的使用:

               在OC裡面沒有 “ student調用sayHi ” 這種表述

               正確表述:給student對象發送sayHi訊息,格式: [ student  sayHi ]  

三、自訂初始化方法

       - (id)init這個初始化方法只能給執行個體變數設定預設值,不靈活

       - (instancetype)initWithName:自訂初始化方法,根據需求定義初始化的方法

       樣本:

               - (instancetype)initWithName:(NSString   *)name

                                           initWithAge:(int)age

                                       initWithHeight:(float)height ;


               - (instancetype)initWithName:(NSString  *)name

                                           initWithAge:(int)age

                                       initWithHeight:(float)height

               {

                            _name = name;

                            _age = age;

                            _height = height;

                            return   self;

               }

       #import:匯入標頭檔,即匯入標頭檔中的內容到當前類

                    #import  " " :匯入自訂的類

                    #import  <>:匯入系統類別庫中的標頭檔

                    功能類似C語言的#include,但是可以避免標頭檔的重複匯入

四、嵌套迴圈匯入

        建立兩個類,A繼承於NSObject,B繼承於NSObject

        A類有個執行個體變數    B  *b;

        B類有個執行個體變數    A  *a;

        這時就需要用到@class關鍵字

        @class:告訴編譯器@class後面的字串作為類名使用,並未匯入類的介面內容,有效避免了嵌套迴圈匯入


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.