OC基础--->类 和 对象

--------->实例1、类的 特征、方法 的声明和实现<----------

A--->Teacher 为自定义类名 :command + n 选择Cocoa Touch Class

B--->NSObject 为父类名 :为Foundation框架下的一个根类( 即没有父类 )

@interface Teacher : NSObject

{

C--->声明Teacher类创建的对象拥有的实例变量

       1)、"_"是 官方 推荐的写法,以便于区分

       2)类型名 “*”_ 实例变量名   表示创建的是对应类型的指针

NSString *_name;

NSString *_gender;

NSInteger  _age;

}

//D--->方法的声明 : 1)、类似于C的函数 

                               2)、“-”表示对象方法,只有对象可以调用

- (void)teaching; 

- (void)getSalary;


@impementation Teacher

- (void)teaching{

NSLog(@"我正在进行教学活动");

}

-(void)getSalary{

NSLog(@"这个月发的不少,可以吃大餐了");

}

@end

E--->创建一个类--->OS X -->Sourse-->CocoaClass &Next--->(Class):Teacher; ( SubClass of ) NSObject;

(Language):Objective-C --->Teacher.h &Teacher.m

F--->1、类的定义过程需要进行分文件放置。文件分为 .h  (接口文件) 和 .m (实现文件)。

2、1)要使用类名命名文件。 2).h 文件管理类的接口部分; .m 文件管理类的实现部分

3、只要符合类的接口部分和类的实现部分的定义,就可以定义出一个类

4、文件中可以定义出多个类,但是文件的名字以类名命名。所以不提倡使用这中方式。 例如: Person文件中定义一个 Dog 类

G--->1、类是一个抽象的概念,在实际开发中程序的运行是通过对象间的相互协作来完成。

2、对象是类的实例,通过类来创建对象

3、创建对象步骤:1)、分配内存空间:根据类中声明的实例变量为对象在  堆区  分配内存,并返回首地址 2) 初始化:为对象的实例变量设置初始值

H---> 1) 、对象的创建: 分配内存空间,并且将内存空间数据清0

Teacher *teacher = [Teacher alloc]

teacher = [teacher init];

2)、Teacher *teacher = [[Teacher alloc]init];

I--->开辟空间

1)  +(instancetype)alloc;1)、“+” 表示方法是类方法,只能由类调用。 instancetype 返回值类型,可以用 id (任意对象类型)替代

2)初始化 -  ( instancetype ) init ; "-" 对象方法, 对象调用。 “instancetype” 返回值类型

J ---> instancetype 和 id 的区别

1)instancetype 可以返回和方法所在类相同类型的对象, id 只能返回未知类型的对象

2) instancetype 只能作为返回值和参数, id 还可以用来定义变量

3)instancetype 会告诉编译器当前的类型,但 id 对于编译器却是无类型的,调用任何方法不会给出错误提示。

4)对于 init 方法,id 和 instancetype 是没有区别的。因为编译器会把 id 优化成 instancetype 。当明确返回的类型就是当前 Class 时,使用 instancetype 能避免 id 带来的编译不出的错误情况

J ----> 对象的创建

Teacher *teacher = [ [ Teacher alloc ] init ];

1) teacher 对象是一个指针 ,存储对象的首地址,代指对象

2)真正的对象在堆区空间 :_name _gender _age ...

K ---- > 对实例变量的操作

1)实例变量在初始化时只做少量设置,如果在程序运行过程中需要设置,我们需要对实例变量进行@public修饰

2)@public 实例变量访问修饰符 (共有)。被其修饰的实力变量外界可以通过  对象 ->实例变量  访问并且修改

L ----> 三种可见度的区别

                     本类                       子类                       其他类  

@public    可以直接访问        可以直接访问        可以直接访问   

                实例变量                实例变量               实例变量

@private    可以直接访问     不可以直接访问    不可以直接访问

                  实例变量          实例变量              实例变量

@prectected 可以直接访问    可以直接访问     不可以直接访问

                    实例变量          实例变量          实例变量

1)实例变量默认可见度 @protected, 外界无法访问

M ----> OC 中的方法分为两种:类方法 ( + 号 )和实例方法 ( - 号 )

1)类方法:只能被雷使用,例如:+ ( instancetype )alloc;

类方法中不能使用实例变量。

2)实例方法:只能对象使用,例如 - ( instancetype )init;

N ---- > 方法的声明


O ---- > 如何获取方法的方法名

删除 : 类型标识,返回类型,参数类型,参数名,空格

上面的方法名为 : replaceObjectAtIndex:WithObject:

1)一个类中不能出现同名方法

2)“ : ” 标识参数,不能省略。有冒号必须有参数。

3)冒号属于方法名的一部分

P ---- > 方法的声明

声明一个多参数的方法

- (void)setName : ( NSString *) name  gender : ( NSString * ) gender  age : ( NSUInteger ) age;


Q ---- > 方法的使用

在 OC 中使用消息发送机制 : [receiver message]

[ teacher  getSalary ];

1) 给 teacher 对象发送 getSalary 消息

2)teacher 接收到消息, 即方法 getSalary 

3) teacher 找到 getSalary 方法, 并执行

L ---- > setter 和 setter 方法

1)在 OC 里, 为  单一  实例变量赋值的方法称作setter (设置器)

2)获取单一实例变量值得方法称作 getter (访问器)

L ---- > setter 和 getter 方法的书写格式

1)OC 中规定了 setter 和 getter 方法的书写格式

比如:实例变量 NSUInteger _age

setter 的书写格式: - (void)setAge : (NSUInteger)age;

即 set + 首字母大写的实例变量名 (忽略下划线)

getter的书写格式: - (NSUInteger)age;

即返回值类型与变量类型一致,方法名与实例变量名相同(忽略下划线)

R ---- > setter 与 getter 同实例变量的关系

1)无论 setter 和getter 内部操作的是实例变量

2)每一个实例变量都需要一对 setter 和 getter 方法


S-------->小结

1)面对对象和面对过程的区别:两种不同的编程思想,思考角度不同 : 前者以对象为中心,后者以事件为中心

2)类是对象的抽象,对象是类的实例。 面对对象编程:县穿件对应的类,再由类生成对象,完成开发

3)类包含接口和实现两部分。对象创建分两步:创建对象,初始化。

4)实例变量三种可见度:@public\@protected\@private

5)方法是 OC 的核心 ,采用消息机制【receiver message】

6)"-" message 由对象来调用; “+” message 由类来调用

7)setter 和 getter 方法 访问的是单一实例变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容