OC三大特性之--封装

 

1、基本介绍

封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符:

public,default,protected,private

访问权限依次递减,这样我们在定义类的时候,哪些字段和方法不想暴露出去,哪些字段和方法可以暴露,可以通过修饰符来完成,这就是封装,下面来看一个例子吧:

#import   
  
@interface Car : NSObject{  
    //这个属性就是对外进行保密的相当于private,所以我们需要在外部访问的话,必须定义get/set方法  
    //默认的是private的,但是我们可以使用@public设置为public属性的,那么在外部可以直接访问:person->capcity = 2.8;  
    //当然我们一般不这么使用,因为这会破坏封装性,这种用法相当于C中的结构体中权限  
    //一共四种:@public,@protected,@private,@package,这个和Java中是相同的  
@public  
    float _capcity; //油量属性  
}  
  
- (void)run:(float)t;  
  
@end

 

这里我们可以看到,OC中也是有四种访问权限修饰符:

@public、@protected、@private、@package

其中默认的修饰符是@private

但是这里要注意的是:OC中的方法是没有修饰符的概念的,这个和Java有很大的区别,一般都是公开访问的,即public的,但是我们怎么做到让OC中的一个方法不能被外界访问呢?

OC中是这么做的,如果想让一个方法不被外界访问的话,只需要在.m文件中实现这个方法,不要在头文件中进行定义,说白了就是:该方法有实现,没定义,这样外界在导入头文件的时候,是没有这个方法的,但是这个方法我们可以在自己的.m文件中进行使用

2、set和get方法

1.        set方法和get方法的使用场合

@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数

2.        set方法

1)   作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值

2)   命名规范:

   方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写

   形参名称不要跟成员变量同名

3.        get方法

1)   作用:返回对象内部的成员变量

2)   命名规范:get方法的名称一般就跟成员变量同名

4.        成员变量的命名规范

   成员变量都以下划线 _ 开头

   可以跟get方法的名称区分开

   可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量

3、代码示例

 1 #import <Foundation/Foundation.h>
 2 // 声明
 3 @interface Car : NSObject
 4 {
 5     int _wheels; // 轮子个数
 6 }
 7 /*set方法*/
 8 - (void) setWheels:(int)wheels;
 9 /*get方法*/
10 - (int) wheels;
11 @end
12 
13 @implementation Car
14 // set方法的实现
15 - (void) setWheels:(int)wheels
16 {
17     // 对外面传进来的轮子数进行过滤
18     if (wheels<=0)
19     {
20         wheels = 1;
21     }
22     
23     _wheels = wheels;
24 }
25 
26 // get方法的实现
27 - (int) wheels
28 {
29     return _wheels;
30 }
31 @end

 

posted on 2015-06-12 14:04  辣条  阅读(349)  评论(0编辑  收藏  举报

导航