02-set方法和get方法

 

1、set方法与get方法简介

  (1) @public作用域下的成员变量可以被外界任意赋值,往往会产生脏数据(不合理的数据),比如:人的年龄不可能为负。

    以后成员变量尽量不要使用@public

      (2) 我们可以使用set方法和get方法来管理成员的访问(类似安检,过滤掉不合理的对象)。

  (3) 3种操作: a. 只写(set)  b. 只读(get)   c.可读写(get set)。

  (4) get set 方法只用来读写成员变量值,不能对其他方法进行操作。

  (5) get set 属于对象方法。

2、set方法

  (1) 作用:给外界提供一个方法用来访问或设置成员变量值,可以在方法里面过滤掉一些不合理的值。

  (2) set 方法相当于写操作

  (3) 命名规范:

    1> set方法以减号 - 开头(对象方法);

    2> 方法名必须以set开头,set后面跟上成员变量去掉下划线的部分,成员变量的首字母必须大写;

      例如:  - (void)setAge: (int)age; 方法名是  setAge:

    3> 返回值一定是void;

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

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

      例如:                 成员变量 int _age;   成员变量名称是  _age

      对应的set方法:- (void)setAge: (int)age;  形参名称是 age

      二者不一样,此处再次体会下划线的好处。

3、get方法

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

    (2) get 方法相当于 读操作

  (3) 命名规范:

    1> get 方法以减号 - 开头;

    2> 方法名跟形参名称一样,即成员变量名称去掉下划线后剩下的部分

      例如:  成员变量 int _age;            成员变量名称是 _age

          - (void)setAge: (int)age; 形参名称是 age

            - (int)age;         get方法名称是 age

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

      4> 不需要接收任何参数

      例如:  - (int)age;

4、成员变量命名规范

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

    2> 可以跟get方法的名称区分开  _age(成员变量名)  age(get方法名)

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

成员变量名称以下划线开头的好处:

    1>可以防止与set方法的形参名称以及get方法的方法名重名。

    2>可以更加方便地找到想找的成员变量。

5、代码示例

 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 //类的实现
14 @implementation Car
15 // set方法的实现
16 - (void) setWheels:(int)wheels
17 {
18     // 对外面传进来的轮子数进行过滤
19     if (wheels<=0)
20     {
21         wheels = 1;
22     }    
23     _wheels = wheels;
24 }
25 
26 // get方法的实现
27 - (int) wheels
28 {
29     return _wheels;
30 }
31 @end

6、封装的好处

  (1)过滤不合理的值

  (2)屏蔽内部的赋值过程

  (3)让外部不必关注内部的细节

 

 

posted @ 2014-09-27 23:14  微雨独行  阅读(931)  评论(0编辑  收藏  举报
1 2