您的位置:首页 > 职场人生

黑马程序员————IOS学习笔记 第3篇 OC面向对象三大特性(1)

2015-02-04 22:50 609 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、封装的定义:

封装是为了使内部结构不要暴露在外。之前所学的对成员变量的赋值是直接用对象访问@public的成员变量,因此可能会导致不合理的赋值,因此要使用方法来对外界的赋值进行监督,对成员变量进行封装。

封装的环境:外界对成员变量的赋值有时候会不合理,因此要提供一个方法给外界设置成员变量的值,对赋的值进行过滤。

二、set 方法:

1.作用:提供一个方法给外面设置成员变量的值,对赋的值进行过滤、监督,防止错误的赋值,以及满足一些客户的赋值要求。

2 命名规范:

1> 方法名必须以set开头

2> set后面跟上成员变量的名称,成员变量的首字母必须大写

3> 返回值一定是void

4> 一定要接收一个参数,而且参数类型跟成员变量类型一致

5> 形参的名称不能跟成员变量名一样

如:set方法的声明: -(void)setAge:(int)newAge

set方法的实现:

- (void)setAge:(int)newAge

{

// 对传进来的参数进行过滤

if (newAge <= 0)

{

newAge = 1;

}

age = newAge;

}

如: [对象 SetAge:10] 表示将10赋值给_age

三、get方法:

1.除了赋值外可能还要访问成员变量,之前也是直接用对象直接访问。而oc也将此功能封装在get方法内。

2命名规范:

1> 肯定有返回值,返回值类型肯定与成员变量类型一致

2> 方法名跟成员变量名一样

3> 不需要接收任何参数

如:get方法的声明:-(int)age;

get方法的实现:

-(int)age

{

return age;

}

四、封装的好处:

实际是将赋值变为方法,把细节隐藏,保障数据的安全与封装;

如果某些成员变量只允许外界只读,则可对它只提供get方法。

set好处 :可以在输入时根据要求任意操作、监听, 实现客户要求的功能

五、注意封装的细节:

1.成员变量名的命名规范:一定要以下划线__开头,这与初学时的不太一样,以后要遵守这种写法。

2.作用:

1>让成员变量和get方法的名称区分开

2>可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量

六、弱语法:

实际上OC内部是c语言面向过程 ,而外部包装为面向对象。在用XCode进行编译时,会有一些无法识别的错误,只有在运行时才会出错,表现出了弱语法的一面,了解弱语法有利于以后开发过程中错误的避免与解决。

1.方法没有声明 没有实现,在调用此方法是,编译有警告链接不报错 但是运行报错 :消息不明

2.有声明,没有实现, 编译无错有警告链接无措

oc是在运行过程中才会检测对象有没有实现相应的方法

3.无声明有实现,可以实现一个对象的方法,是对的

七、类方法:

1. 在面向OC的方法可以分为对象方法、类方法。例如:Person *p=[Person new] 因为 Person是类,则new是类方法。[p
eat]因为p是对象的指针,则eat是对象方法 以减号开头。

2.类方法和对象方法区别:

对象方法

1> 减号 - 开头

2> 只能由对象来调用

3> 对象方法中能访问当前对象的成员变量(实例变量)

类方法

1> 加号 + 开头

2> 只能由类(名)来调用

3> 类方法中不能访问成员变量(实例变量)这是因为成员变量就是实例变量,而只有类创建了对象成员变量才是实例,类不是实例化的,因此不能访问成员变量。

如:对象方法的声明: - (void)test; 类方法的声明 + (void)test;

3.类方法的好处和使用场合:

1> 不依赖于对象,执行效率高,有利于提高程序性能,如:不用创建对象而浪费时间

2> 能用类方法,尽量用类方法

3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法。如工具类:基本没有任何成员变量,里面的方法基本都是类方法

小结:

1> 可以允许类方法和对象方法同名

2>如果方法不使用成员变量,成为工具类,则可以使用类名完成功能,可以提高性能

3>同属于一个类的方法可以相互调用

4>对象方法 类方法可以相互调用

5.>注意死循环 类对象练习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐