您的位置:首页 > 移动开发 > IOS开发

IOS--OC--Lesson 封装 setter getter

2015-06-26 22:07 441 查看
一 封装:

1.目的 为了实现高内聚,低耦合

内聚:模块内成员的关系程度

耦合:模块与模块之间的关系程度

降低耦合性 内聚性就会升高

2.为什么要进行封装?

目的是为了讲数据隐藏起来 只能用此类的方法才可以访问或修改,不能被外界任意存储数据是面对对象的设计本质,降低数据的误用型;

3.@public @protected @private 的用法

1⃣@public 公共的 谁都可以用 很危险

2⃣@protected 受保护的(默认值) 不允许在类的外部访问实例变量 但可以在子类中得内部被访问.函数中就会不可调用

①类的内部:实例变量名直接访问

②类的外部:使用方法去访问 (设置器 访问器);

③ 设置器 setter 方法

- (void ) settype: (NSString *)type;
- (NSString *) type;


④访问器 getter 方法

设置 getter 方法步骤

/*

1.一定是对象方法

2.一定有返回值 返回的类型要和实例变量的类型一致

3.方法名就是实例变量名(要去掉下划线_);

*/

3⃣@private 私有的 外部不可见 只有本类中得可见,子类中也不可见;

① 内部访问:实例变量名

外访问:通过设置器和访问器

[p setCup :@"D"];
NSLog(@"%@",[p  cup]);


二 方法

1. OC 中方法大体分为:类方法和对象方法

// 类方法:+加号开头 由类名来调用

// 对象方法:-减号开头 由 对象调用

//判断方法是否重名 :1. + -号;2. 方法名;

PS girl *p1 =[[girl alloc]init];

// 调用对象方法 用对象 就是新赋值的那个变量名

// [p1 sayHello];

// 调用类 用设定好的类 比如 girl 这个就是类

// [girl sayHello];

2.类方法和对象方法总结

// 对象方法

1.- 开头

2. 在对象方法中能够使用实例变量

3.对象方法只能由对象调用[对象名 方法];

// 类方法

1.+ 开头

2.在类方法中不可以使用实例变量 (类方法由类来调用,并没有给他开辟空间)

3.只能由类方法调用 [ 类名 方法];

4.使用类的好处:不依赖创造的对象 更灵活 执行效率高 能用类解决 尽量用类.

5.场合:类方法中不需要实例变量的适合,使用类方法更简洁

3. 有没有参数不同情况下的方法

1⃣️无参数的方法

//对象方法

- (void) sayHello;


//类方法

+ (void) sayHello;


2⃣️有参数的方法

//提取方法名

1. 去掉+-号 ;ps :(void) sayHello :(NSString *)aName

2.去掉方法的返回值去掉;ps:sayHello :(NSString *)aName

3.去掉参数类型和参数名;ps:sayHello :

4.有冒号也是方法的而一部分,有”:”后面一定有参数;

方法名:sayHello : (冒号一定要加上)

PS:
- (void) sayHello :(NSString *)aName;//对象

+ (void) sayHello :(NSString *)aName;// 类


3⃣️ 多个参数的方法 withCount :(NSInteger)count; 说了多少次

//命名格式: -/+ (返回值) 方法1:(参数类型 *)参数名1 方法2 :(参数类型)参数名2 方法3 :(参数类型)参数名3 …… 方法名命名方法小驼峰 第一个字母小写 下面的每个单词首字母大写

//多个参数时候,每个参数定义完成记得加空格

//提取方法名 sayhello :withCount

PS:
- (void) sayHello :(NSString *)aName withCount :(NSInteger)count;// 对象

+ (void) sayHello :(NSString *)aName withCount :(NSInteger)count;/


三 自定义实例变量初始化方法

1. initWithColor方法实现了 实例变量初始化和实例变量赋值结合到一起

- (id)initWithColor :(NSString *)color weight :(CGFloat)weight price :(CGFloat)price;


主要是 initWith后面跟的是第一个变量名的名字首字母大写

1.面试题:# inculde #import @ class作用

/*
# inculde C语言中的引入头文件 和#import 一样  但是# import 能避免重复引入头文件
#import 和@ class 不同:# import 将整个文件引入,@ class 告诉编辑器 后面跟的东西是一个类,不会引入全部文件
一般情况下,@ class 和#import 配套使用  @class 在.h 中 而#import 在.m 文件中
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: