封装是面向对象语言的三大特征之一(另外两个是继承和多态),封装的作用是隐藏对象的属性信息,不允许外部程序访问,只能通过该类提供的方法来实现对内部信息的操作和访问
例如定义了一个人的类,他的年龄只能通过时间的改变来慢慢变化,不能随意改变。
对一个类或对象实现良好的封装,可以实现以下目的
1.隐藏类的实现细节
2.让使用者只能通过事先预定的方法访问数据,限制不合理的访问
3.便于修改,提高代码的可维护性
4.可以进行数据检查,有利于保证对象信息的完整性
要实现良好的封装,需要讲对象的属性和实现细节隐藏起来,不允许外部访问;把方法暴露出来,让方法来控制对属性进行合理的访问和操作
OC提供了三个访问控制符 :@private、@package、@protected和@public。
1.@private(当前类访问权限):用这个访问控制符的成员就只能在当前类的内部被访问。这个访问控制符用于彻底隐藏成员变量。在类的实现部分定义的成员变量相当于默认使用这种访问权限
2.@package(与映像访问权限相同):用这个访问控制符的成员可以在当前类以及当前类实现的同一个映像的任意地方访问。
3.@protected(子类访问权限):用这个访问控制符的成员变量可以在当前类,当前类的子类的任意地方访问。在类的借口部分定义的成员变量默认使用这种访问权限
4.@pullic(公共访问权限):用这个访问控制符的成员变量可以在任意地方访问,不管是处于同一映像或者是有继承关系