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ù)。