zoukankan      html  css  js  c++  java
  • 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)让外部不必关注内部的细节

     

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    实用产品规划
    产品经理对用户的调研
    产品经理用户研究
    竞品分析方案
    产品竞品分析
    Mybatis Plus
    shiro
    Spring cloud
    Spring Boot
    Redis入门(二)
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/3997457.html
Copyright © 2011-2022 走看看