一、封装的概念:
面向对象的三大特性:封装(成员变量)、继承和多态。
将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
二、可以实现的目的
1.隐藏类的实现细节
2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问
3.可进行数据检查,从而有利于保证对象信息的完整性
4.便于修改,提高代码的可维护性
三、访问控制符
@private(当前类访问权限):用于彻底隐藏成员变量,在类的实现部分定义的成员变量相当于默认使用这种访问权限。
@package(同映像访问权限):用于部分隐藏成员变量。
@protected(子类访问权限):这个访问限制符用于部分暴露成员变量。在类接口部分定义的成员变量默认是这种访问权限。
@public(公共访问权限):成员可以在任意地方访问,不管是否处于同一映像中,也不管是否具有父子继承关系。
四、set与get方法
Set方法在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public、@protected等关键字修饰,而是使用Set方法来为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
Set方法的作用:为外界提供一个设置成员变量值的方法
命名规范:(注意是规范,而不是不规范就通过不了,这里卡了我好久)
(1)方法名必须以set开头
(2)Set后面跟上成员变量的名称,首字母大写
(3)返回值一定是void
(4)一定要接收一个参数,而且参数类型需要和成员变量的类型一致
(5)形参名不能喝成员变量名一样(苹果官方推荐成员变量名前加_以示区分)
Set方法的好处:
(1)不让数据暴露在外,保证了数据的安全性
(2)对设置的数据进行过滤
get方法:
get方法的作用:为调用者返回对象内部的成员变量
命名规范:
(1)一定有返回值,返回值的类型和成员变量的类型一致
(2)方法名和成员变量名一样
(3)不需要接收任何参数
五、合成存取方法
如果一个类中包含10个甚至多个成员变量时,为每个成员变量都编写setter\getter是一件乏味的事情,所以OC2.0开始,它开始自动合成了setter方法和getter方法,让系统自动合成setter和getter方法只要如下两步:
1.在类接口部分使用@property指令定义属性。使用@property定义属性时无须放在类接口部分的花括号里,而是直接放在@interface@end之间定义。@property指令放在属性定义的最前面。
2.(此步可选)如果程序需要改变getter\steer方法对应的成员变量的变量的变量名,则可在类的实现部分使用@synthesize指令。
[iOS开发]隐藏与封装的学习笔记与记录
最新推荐文章于 2024-10-23 09:57:42 发布