OC語言day01-06第一個OC類

pragma mark 第一個OC類

pragma mark 概念

pragma mark 代碼

#import <Foundation/Foundation.h>

/*
 事物名稱:iPhone
 屬性: 顏色, 型號, CPU, 尺寸        == 成員變量
 行為: 打電話, 發(fā)短信, 上網(wǎng)         == 成員方法
 
 C語言中函數(shù)分為聲明和實現(xiàn)
 OC中定義一個類 也 分為聲明和實現(xiàn),也就是說以后我們在OC中定義類, 就是在寫類的聲明和實現(xiàn)
 */

// 1.如何編寫類的聲明(interface 接口)
// 以@interface 開頭, 以 @end結(jié)尾 , 然后再class name 對應(yīng)的對方寫上 事物名稱, 也就是類名即可
// 注意 : 類名的 首字母 必須 大寫
// 聲明一個類的目的就是為了告訴系統(tǒng), 我們這個類中 有哪些屬性和行為

// OC類聲明中屬性只能寫在 @interface 和 @end 之間的{}中
// 注意: 編寫OC類屬性的時候,建議將所有屬性的名稱前面 加上 _

// 類名后面的 : NSObject 是為了讓我們的 IPhone類 具備 創(chuàng)建對象的能力
@interface IPhone : NSObject
{
    // 注意: 默認(rèn)情況下, OC對象中的屬性是不能 直接訪問的
    @public // 只要讓我們類的屬性公開, 以后就可以 直接通過 一個指向結(jié)構(gòu)體的指針 來操作對象中的屬性
    float _model; // 型號
    int _cpu;    // CPU
    double _size; // 尺寸
    int _color;  // 顏色
}
// 行為
@end

// 2.如何編寫類的實現(xiàn) (implementation 實現(xiàn))
// 以@implementation開頭,以@end結(jié)尾, 然后在class對應(yīng)的地方寫上聲明的類的名稱,必須和聲明的類名一模一樣
@implementation IPhone

// 行為的實現(xiàn)

@end

int main(int argc, const char * argv[])
{
    
    // 如何通過一個類來創(chuàng)建對象
    // 在OC中想通過一個類 來創(chuàng)建 一個對象, 必須給類發(fā)送一個消息 (好比C語言中調(diào)用方法一樣)
    // 如何 發(fā)送消息 ? 在OC中只要 想要發(fā)送消息就先寫上,[類名稱/對象名稱 方法名稱];
    // 發(fā)送什么消息(調(diào)用什么方法) 可以創(chuàng)建一個對象呢? new
    
    /**
     *  只要通過一個類調(diào)用類的new方法, 也就是給類發(fā)送一個叫做new的消息之后
        系統(tǒng)內(nèi)部會做3件事情
        1.為iPhone類創(chuàng)建出來的 對象 分配存儲空間
        2.初始化 iPhone類 創(chuàng)建出來的對象 中的屬性        // int num = 0;
        3. 返回iPhone類 創(chuàng)建出來的 對象 對應(yīng)的地址
     */
#warning 通過一個 類型的指針 接收了 類型 對象的地址
    /*
    // 什么是用于保存地址的? 指針
    int num;
    num = 0;
    // 通過 int類型的指針 接收了int對象的地址
    int *pn = #
    */
//    [IPhone new];   // 如果類聲明 沒有繼承 NSObject 那么這個類沒有具備創(chuàng)建對象的行為
    // 通過一個IPhone 類型的指針 接收了 IPhone對象的地址
    // 如果使用 一個指針 保存了某一個對象的地址
    // 利用iPhone類型的指針 保存了 iPhone對象的地址, 那么我們稱 iPhone類型的指針p 為iPhone對象
    IPhone *p = [IPhone new];   // 如果類聲明 沒有繼承 NSObject 那么這個類沒有具備創(chuàng)建對象的行為
    p->_size = 5.5; //is protected(是 受保護(hù)的)
    p-> _color = 0;
    p->_model = 4;
    p->_cpu = 22;

    NSLog(@"size = %f,color = %i,model = %f,cpu = %i",p->_size,p->_color,p->_model,p->_cpu);
    // OC中的類 其實 本質(zhì)就是一個結(jié)構(gòu)體, 所以p這個指針 其實就是指向了一個結(jié)構(gòu)體
#warning 結(jié)構(gòu)體賦值 2種方式
    /*
    struct Person {
        int age;
        char *name;
    };

    struct Person sp;
    struct Person *sip = &sp;
    // 結(jié)構(gòu)體 賦值
//    (*sip).age = 22;
//    (*sip).name = "lyh";
    
    sip->age = 22;
    sip->name = "lyh";
    
    printf("age = %i name = %s\n",sip->age, sip->name);
     */
    return 0;
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容