一坞嘀、概念
/*
>>>1. 如何編寫(xiě)類的聲明
以@interface開(kāi)頭,以@end結(jié)束,然后在class name 對(duì)應(yīng)的地方寫(xiě)上 事物名稱,也就是類名即可
注意 : 類名的首字符必須大寫(xiě)
聲明一個(gè)類的目的就是為了告訴系統(tǒng),我們這個(gè)類中有哪些屬性 和行為
CO類聲明中 屬性只能寫(xiě)在@interface 和 @end之前的{}中
注意 : 編寫(xiě)OC類屬性的時(shí),建議將所有屬性的名稱前面加上 _ (iOS規(guī)范)
類名后面的 : NSObject 是為了讓我們的iPhone類具有創(chuàng)建對(duì)象的能力
>>>2. 如何編寫(xiě)類的實(shí)現(xiàn)
以@implementtation開(kāi)頭, 以@end結(jié)尾,然后在class對(duì)應(yīng)的地方 寫(xiě)上聲明時(shí) 聲明的類的名稱, 必須利用聲明的類名,一模一樣
>>>3.如何通過(guò)一個(gè)類 創(chuàng)建一個(gè)對(duì)象
在OC中想要通過(guò)一個(gè)類來(lái)創(chuàng)建一個(gè)對(duì)象,必須給類發(fā)送一個(gè)消息(好比C語(yǔ)言中調(diào)用方法一樣)
如何發(fā)送消息? 在OC中只要想要 發(fā)送消息就先寫(xiě)上 [類名稱/對(duì)象名稱 方法名稱];
發(fā)送 什么消息(調(diào)用方法)可以創(chuàng)建一個(gè)對(duì)象呢? new
>>>4,只要通過(guò)一個(gè)類調(diào)用類的new方法,也就是給類 發(fā)送一個(gè)叫new的消息之后
系統(tǒng)內(nèi)部 就會(huì)做3件事情
1.為 Iphone 類 創(chuàng)建出來(lái)的對(duì)象分配存儲(chǔ)空間
2. 初始化 iPhone 類創(chuàng)建出來(lái)的對(duì)象中的屬性
3. 返回 iPhone類 創(chuàng)建出來(lái)的對(duì)象 對(duì)應(yīng)的地址 (指針)
>>>4.類的對(duì)象的概念
通過(guò) 一個(gè)iPhone類型的指針 接受了 iPhone對(duì)象的地址
如果使用給一個(gè)指針保存了某一個(gè)對(duì)象的地址,那么我們就稱這個(gè)指針為 某個(gè)類的對(duì)象
利用 iPhone類型的指針 保存了 iPhone對(duì)象的地址, 那么我們就稱之為 iPhone類型的指針 (p)稱之為 iPhone對(duì)象
*/
二勉失、代碼
#import <Foundation/Foundation.h>
#pragma mark 類
/*
事物名稱:iPhone
屬性:顏色,型號(hào),cpu,尺寸 == 成員變量
行為:打電話,發(fā)短信,上網(wǎng) == 成員方法
C語(yǔ)言中函數(shù)分為聲明和實(shí)現(xiàn)
OC中定義一個(gè)類也分為聲明和實(shí)現(xiàn),也就是說(shuō)以后我們OC中定義類,就是寫(xiě)在類的聲明和實(shí)現(xiàn)
*/
#pragma mark 1. 如何編寫(xiě)類的聲明
// 以@interface開(kāi)頭,以@end結(jié)束,然后在class name 對(duì)應(yīng)的地方寫(xiě)上 事物名稱,也就是類名即可
// 注意 : 類名的首字符必須大寫(xiě)
// 聲明一個(gè)類的目的就是為了告訴系統(tǒng),我們這個(gè)類中有哪些屬性 和行為
// CO類聲明中 屬性只能寫(xiě)在@interface 和 @end之前的{}中
// 注意 : 編寫(xiě)OC類屬性的時(shí),建議將所有屬性的名稱前面加上 _ (iOS規(guī)范)
// 類名后面的 : NSObject 是為了讓我們的iPhone類具有創(chuàng)建對(duì)象的能力
@interface IPhone : NSObject
{
// 默認(rèn)情況下 : OC對(duì)象中的屬性 是不能直接訪問(wèn)的
@public // 只要讓類中的屬性公開(kāi), 以后就可以直接通過(guò) 一個(gè)指向結(jié)構(gòu)體的指針 來(lái)操作對(duì)象中的屬性
float _model; // 型號(hào) 0
int _cpu; // cpu 0
double _size; // 尺寸 0
int _color; // 顏色 0
}
// 行為
@end
#pragma mark 2. 如何編寫(xiě)類的實(shí)現(xiàn)
/*
以@implementtation開(kāi)頭, 以@end結(jié)尾,然后在class對(duì)應(yīng)的地方 寫(xiě)上聲明時(shí) 聲明的類的名稱, 必須利用聲明的類名,一模一樣
*/
@implementation IPhone
// 行為的實(shí)現(xiàn)
@end
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
// 如何通過(guò)一個(gè)類 創(chuàng)建一個(gè)對(duì)象
// 在OC中想要通過(guò)一個(gè)類來(lái)創(chuàng)建一個(gè)對(duì)象,必須給類發(fā)送一個(gè)消息(好比C語(yǔ)言中調(diào)用方法一樣)
// 如何發(fā)送消息? 在OC中只要想要 發(fā)送消息就先寫(xiě)上 [類名稱/對(duì)象名稱 方法名稱];
// 發(fā)送 什么消息(調(diào)用方法)可以創(chuàng)建一個(gè)對(duì)象呢? new
/*
只要通過(guò)一個(gè)類調(diào)用類的new方法,也就是給類 發(fā)送一個(gè)叫new的消息之后
系統(tǒng)內(nèi)部 就會(huì)做3件事情
1.為 Iphone 類 創(chuàng)建出來(lái)的對(duì)象分配存儲(chǔ)空間
2. 初始化 iPhone 類創(chuàng)建出來(lái)的對(duì)象中的屬性
3. 返回 iPhone類 創(chuàng)建出來(lái)的對(duì)象 對(duì)應(yīng)的地址 (指針)
*/
// 通過(guò) 一個(gè)iPhone類型的指針 接受了 iPhone對(duì)象的地址
// 如果使用給一個(gè)指針保存了某一個(gè)對(duì)象的地址,那么我們就稱這個(gè)指針為 某個(gè)類的對(duì)象
// 利用 iPhone類型的指針 保存了 iPhone對(duì)象的地址, 那么我們就稱之為 iPhone類型的指針 (p)稱之為 iPhone對(duì)象
IPhone *p = [IPhone new];
p->_model = 4; // instance variable "_model" is protected
p->_size = 3.5;
p->_color = 0;
p->_cpu = 1;
NSLog(@"model = %f, size = %f,color = %i,cpu = %i",p->_model, p->_size,p->_color,p->_cpu );
// OC中的類 其實(shí)本質(zhì)就是一個(gè)結(jié)構(gòu)體,所以p這個(gè)指針 其實(shí)就是指向了一個(gè)結(jié)構(gòu)體
/*
struct Person
{
int age;
char *name;
};
struct Person sp = {25,"lyh"};
struct Person *sip = &sp;
// (*sip).age = 22;
// (*sip).name= "lyhx";
sip->age = 22;
sip->name = "lyhxx";
*/
// 什么是 用于保存地址的 ? 地址
/*
int num;
num = 0;
int *p = #
*/
return 0;
}