OBJ-C匿名对象和封装学习笔记

来源:互联网 发布:ca证书检测网络未连接 编辑:程序博客网 时间:2024/05/21 17:53
==============================================
                 匿名对象和封装
==============================================






匿名类优缺点:


优点:可以简化代码,方便方法调用;
缺点:匿名对象实例化后,只能正确的使用成员变量一次;


常见用法:


Person *p = [[Person alloc] init];
Person *p1 = [Person new];




两者区别:


alloc 和 init 分别把分配内存和初始化的工作分开。这样更加地灵活,可以自行初始化对象的成员变量值。
而不像new每次都初始化为0
new是把分配内存和初始化的工作一起完成了,先分配内存,然后调用类的构造函数。


==========================================================================================


                                   封装的概念及原理


====================================================================================
为什么要进行封装?


不封装的缺点:
当一个类把自己的属性暴露给外部的时候,那么该类就失去对属性的管理权;


将数据隐藏起来,只能用此类的方法函数才可以访问或者设置数据,不可被外部任意存储是面向对象设计本质,降低了数据被无用的可能性。


在OC语言中,使用@interface和@implementation来处理类;


@interface就好像暴露在外面的始终表面,像外界提供展示以及接口,@implementation就好像隐藏在始终内部的构造实现,把具体的实现封装了起来。


-------------------------------------------------------------------------------------


封装的原理?


实例变量默认只能被当前类的对象方法访问。


----------------------------------------------------------------------------------


封装的实现步骤  (重点!!!!!)


定义设置实例变量(setter)方法和访问实例变量(getter)的方法


1.setter方法(设置器)


在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值,在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
set方法的作用:为外界提供一个设置成员变量值的方法。


命名规范:


1.方法名必须以set开头
2.set后面跟上成员变量的名称,首字母大写,如: _age----->setAge
3.返回值一定是void
4.一定要接受一个参数,而且参数类型需要和成员变量的类型一致
5.形参名不能和成员变量名一样(苹果官方推荐成员变量名前加 _ 以示区分)
6.set方法的形参名一般是去掉下划线的实例变量名;
7.set方法一定是一个对象方法;
8.set方法实现中,一定要用形参给实例变量赋值;


-----------------------------------------------------------------------------


2.getter方法(访问器)


get方法的作用:为调用者返回对象内部的成员变量


命名规范:


1.get方法一定是一个对象方法;
2.get方法一定有方绘制,返回值的类型和实例变量的类型要一致;
3.get方法的方法名,是去掉下划线的实例变量名;
4.get方法一定没有参数;
5.get方法的实现中,一定是返回值实例变量值;


-------------------------------------------------------------------------
0 0