O-C相关05:方法的封装.

时间:2022-02-17 23:08:17


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