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

      ------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.>注意死循环 类对象练习 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值