iOS-封装

1.封装:一个类中可以有多个属性和方法,把这些成员封装在一个类中当做一个整体使用。

2.封装的好处:以类为单位来管理这些代码,可以便于代码的维护和管理。并且对外部屏蔽内部的具体实现,对外部来说只是一个对象。

3.类的三要素:类名,成员变量,方法

4.只有getter方法没有setter方法叫只读封装,只有setter方法没有getter方法叫只写封装。

5.为类提供一种专门为实例变量赋值的方法 setter

1.这个方法一定是一个对象方法,因为只有对象方法才能直接访问实例变量。

2.这个方法一定没有返回值,为实例变量赋值不需要返回值。

3.这个方法一定是有参数的,为实例变量赋值一定需要传入一个和实例变量类型相同的参数。

4.这个方法的方法名以set开头,后面跟实例变量名去掉下划线,并首字母大写。

为类提供一种专门访问实例变量的值的方法 getter

1.这个方法一定是一个对象方法,因为只有对象方法才能直接访问实例变量。

2.这个方法一定有返回值,供外界访问实例变量,必须要返回给调用者实例变量的值。

3.这个方法一定没有参数,访问实例变量的值不需要传入任何参数。

4.这个方法的方法名就是去掉下划线的实例变量的名字。

//Person.h文件

#import

@interface Person : NSObject

{

//不要给实例变量@public修饰

int _age;

}

//setter声明

- (void)setAge:(int)age;

//getter声明

- (int)age;

@end

//Person.m文件

#import "Person.h"

@implementation Person

//setter实现

- (void)setAge:(int)age{

//传入的年龄在 0 - 120之间才能赋值,否则输出提示

if(age > 0 && age < 120){

_age = age;

}else{

NSLog(@"年龄不符合");

}

}

//getter实现

- (int)age{

return _age;

}

@end

//main.m文件

#import

#import "Person.h"

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

@autoreleasepool {

//实例化一个对象p

Person *p = [Person new];

//调用p对象setAge方法为对象的实例变量赋值

[p setAge:200];//因为不符合规范,会打印出 年龄不符合

//输出p对象的实例变量age的值

NSLog(@"age = %i",[p age]);//输出 age = 0

}

return 0;

}

6.如果实例变量要被外界访问,那么就需要给它封装一个setter和getter方法。

你可能感兴趣的:(iOS-封装)