初学者:可理解为,封装就是对成员变量(属性)的封装,把属性隐藏起来,对外提供一个方法,让外界通过一个方法设置属性的值。即,封装性就是隐藏实现细节,将属性私有化,提供公有方法访问私有属性。
进一层:方法也是封装。把一堆代码封装到一个方法里面去,隐藏实现细节。
再进一层:类也是一个封装。把类里面所有的方法都隐藏起来,只对你暴露一些接口。
再再进一层:一个包一个框架也是一个封装。例如,系统给我们提供了Foundation框架,我们只需知道有哪些接口,哪些方法,直接调用就可以了。
封装的目的:
同set方法封装属性,可以过滤掉一些不符合逻辑的数据,保证了我们数据的正确性
提高了代码的健壮性
封装的好处:
将变化隔离
提高代码的重用性
提高了代码的安全性
封装属性:
向外部提供设置属性的set方法
- (void)setName: (NSString *)name;
向外部提供访问属性的get方法
- (NSString *)name;
在开发当中有时候只提供get方法,该属性称之为只读属性
有时候只提供set方法,该属性就称之为只写属性
OC有一个约定
给成员变量赋值提供一个叫做set方法的方法:
1.一定是对象方法
2.返回值一定是void
3.一定以set开头,set后面跟上成员变量的名称去掉下划线,并且首字母大写
4.一定有参数,并且参数类型和成员变量类型一致,参数名称和成员变量名称去掉下划线相同
取成员变量的值提供一个叫做get方法的方法:
1.一定是对象方法
2.一定有返回值,并且返回值类型和成员变量类型一致
3.方法名称和成员变量去掉下划线一致
4.一定没有参数
成员变量以下划线开头好处:
1.可以和局部变量区分开来
2.可以和方法的参数区分开来
3.只要你打下划线就可以找到成员变量
4.ios程序员都按照这个规则区写,提高了代码的阅读性