前言:在 OC 中进行封装, 就是实现设置实例变量和获取实例变量数据的方法, 常常称为 setter 方法和 getter 方法. 或称为 get set 读写器.

1,setter
方法

setter 方法又叫设置器, 是为实例变量对外提供的统一访问规则, 用于设置实例变量的值. 一般在开发中, 禁止将实例变量直接暴露到外面. 通过 setter 方法可以为赋值操作进行必要的控制与筛选. 起到了封装和控制的作用.

规则:

1)方法名必须以 set 开头, 然后跟上实例变量的名字(无下划线)

2)使用骆驼命名规则

3) 接收一个参数, 用于为实例变量初始化

4)返回 void 类型

5)setter 是实例方法

2,getter 方法

getter 方法又叫读取器, 是用来在外访问成员变量的统一方法.

规则:

1)getter 返回与相关成员变量一致的类型数据

2)getter 没有参数

3)getter 方法的名字需要与实例变量名同名(无下划线)

3.附上一个小例子:公有三个文件:main.m    person.h       person.m:

main.m

//  stter,getter应用

//

//  Created by wanghy on 15/8/3.

//  Copyright (c) 2015年 wanghy. All rights reserved.

//

#import <Foundation/Foundation.h>

#import "person.h"

int main(int argc,
const char * argv[]) {

@autoreleasepool {

person * p = [[person alloc] init];

[p setName: @"张三"];

[p setAge:13 ];

[p setGender:@"男"];

NSLog(@"\n%@\n%@\n%d",[p name],[p gender],[p age]);

}

}

//  person.h

//  my first_objective-c_program

//

//  Created by wanghy on 15/8/3.

//  Copyright (c) 2015年 wanghy. All rights reserved.

//

#import <Foundation/Foundation.h>

//定义一个 person

@interface person : NSObject

{

@private

NSString * _name;

int _age;

NSString * _gender;

}

//封装属性: 
设置各个属性的setter方法。

-(void)setName:(NSString * )name;

-(void)setAge:(int )age;

-(void)setGender:(NSString * )gender;

//封装输出:设置get方法

-(NSString *)name;

-(int)age;

-(NSString *)gender;

@end

//  person.m

//  my first_objective-c_program

//

//  Created by wanghy on 15/8/3.

//  Copyright (c) 2015年 wanghy. All rights reserved.

//

#import "person.h"

//1.实现姓名,性别,年龄的封装

@implementation person

-(void)setName:(NSString * )name

{

_name = name;

}

//2.年龄
当人的年龄大于等于18岁时才能输入年龄。否则为空。

-(void)setAge:(int )age

{

if (age>=18) {

_age = age ;

}

}

//3.性别
如果输入的不是男人或者女人就无法输入进去。值为空,用 if
判断。

-(void)setGender:(NSString * )gender

{

if ([gender isEqualToString:@"男"] || [gender isEqualToString:@"女"])
{

_gender =gender;

}

}

//定义实例变量的封装。

-(NSString *)name

{

return _name ;

}

-(int )age

{ return _age ;

}

-(NSString * )gender

{

return _gender;

}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

O-C相关05:方法的封装.的更多相关文章

  1. 【类库】私房干货.Net数据层方法的封装

    [类库]私房干货.Net数据层方法的封装 作者:白宁超 时间:2016年3月5日22:51:47 摘要:继上篇<Oracle手边常用70则脚本知识汇总>文章的发表,引起很多朋友关注.便促使 ...

  2. Java方法的封装

    类的封装性即不能让外面的类随意修改一个类的成员变量: 在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调 ...

  3. Android View各种尺寸位置相关的方法探究

    Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...

  4. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  5. jsp:和属性相关的方法,请求的转发,重定向

    jsp中与属性相关的方法: 方法: void setAttribute(String name, Object o): 设置属性 Object getAttribute(String name):获取 ...

  6. Android音频焦点处理相关的方法

    有这么一种场景:你打开qq音乐.优酷客户端.视频播放的时候.这个时候突然来电显示了,此时所有的MediaPlayer相关的服务或者响应都进入"休眠"状态.那么,这个功能是怎么实现的 ...

  7. Android+appium +python 点击坐标tap方法的封装

    当常使用的查找点击元素的方法name.id.classname等无法使用时,我们将会采取坐标的点击来实现操作,同样存在一个问题,当手机的分辨率.屏幕大小不一致时,坐标的定位也会不同,因此将采用相对坐标 ...

  8. asp.net 重写URL方法和封装好的DLL

    .net 重写URL方法和封装好的DLL URL重写方法DLL(2.0)

  9. Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

随机推荐

  1. Clean Code–Chapter 7 Error Handling

    Error handling is important, but if it obscures logic, it's wrong. Use Exceptions Rather Than Return ...

  2. Visual Studio的.NET内存分配分析器解析

    Visual Studio 2012拥有丰富的有价值的功能,以至于我听到开发者反馈的需要的新功能新版本已经有了.另外,我听到开发人员询问具体的功能的某个特性,实际上他真正需要的是另外一个功能点. 上面 ...

  3. HDU4607 - Park Visit(树的直径)

    题目大意 给定一颗树,要求走过其中连续的k个点,使得步数最少 题解 每条边要么经过两次,要么一次,因为我们的目标就是使得走一次的边尽量的多,这样就转换成求树的直径了,求树的直径我用的是两次dfs,先随 ...

  4. hdoj 1253 胜利大逃亡

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. Step2:配置Oracle Dataguard

    接着step1我用Rman duplicate测试下. 1,2两步请参考step1中的1,2 3.startup nomount (standby),一定要是nomount. 4.rman dupli ...

  6. Redis集群战法整理

    单机及集群搭建 http://www.codeceo.com/article/distributed-caching-redis-server.html 主从复制设置 Redis服务器复制(主—从配置 ...

  7. OceanBase里面的rowkey是什么概念,是由哪些要素构成的?

    Rowkey是OceanBase诞生之初就引入的概念,最终被确立是在OceanBase 0.3. 为了便于理解,不妨把OceanBase想象成一个Key-Value系统,Rowkey就是Key,Val ...

  8. java15 IO装饰设计模式

    IO装饰设计模式:(IO中使用了装饰设计模式) 节点流可以直接从源读取数据,处理流就是对节点流的包装,这就是装饰,装饰就是对原有的流的性能的提升.比如买的车,马力不够,就进行装饰,使其马力增大. 装饰 ...

  9. web工程中spring+ibatis的单元测试--转载

    为了保证代码的正确,软件的质量,单元测试几乎是每个程序员都要面临的工作了;而开发中大部分的工作都涉及数据库的操作,也就是平时经常可以看到的DAO了;由于是对数据库的操作,就必然有事务的问题了;如果是启 ...

  10. Java synchronized 总结

    在Java开发的时候经常会用到关键字synchronized来对代码进行同步,在使用的过程中,对于synchronized确不是很熟悉,最近在看Spring源码时,发现有不少地方都用到同步,因此,趁此 ...