前言:在 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