OC开发之——封装的基本使用(13)

一 概述

  • 我们之前介绍的OC程序,属性值被public修饰,无法控制外界对OC属性值的设置,这样就有可能导致程序设计问题(如Student的年龄属性age可能出现负值的情况,不符合实际情况)。
  • 这种情况,可以通过封装得到解决(去掉public修饰符,自己指定setAge方法,并对年龄出现负值的情况进行干预)

二 封装的基本使用(set方法和get方法)

2.1 set方法

声明和实现

1
2
3
4
5
6
7
8
9
10
//set方法声明
-(void)setAge:(int)newAge;
//set方法实现
{
if(newAge<-0)
{
newAge=1;
}
age=newAge;
}

set方法说明

  • 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
  • 命名规范:
    • 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
    • 形参名称不要跟成员变量同名

2.2 get方法

声明与实现

1
2
3
4
5
6
//get方法声明
-(int)age;
//get方法实现
{
return age;
}

get方法说明

  • 作用:返回对象内部的成员变量
  • 命名规范:get方法的名称一般就同成员变量同名

三 代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <Foundation/Foundation.h>

@interface Student : NSObject
{
//@public
int age;
}
-(void)study;
-(void)setAge:(int)newAge;
-(int)age;

@end

@implementation Student

-(void)study
{
NSLog(@"%d岁的学生在学习",age);
}
-(void)setAge:(int)newAge
{
if(newAge<-0)
{
newAge=1;
}
age=newAge;
}
-(int)age
{
return age;
}

@end

int main()
{
Student *stu=[Student new];
//stu->age=20;
[stu setAge:-10];
NSLog(@"学生的年龄时%d岁",[stu age]);
//[stu study];

return 0;
}