黑马程序员技术交流社区
标题:
talk is cheap, show me the code!--面向对象三大特性之——封装
[打印本页]
作者:
崔石炫
时间:
2014-10-22 00:01
标题:
talk is cheap, show me the code!--面向对象三大特性之——封装
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
//@protected //成员变量默认的作用域为protected
int _age;
}
- (void)setAge:(int)age;
- (int)age;
@end
复制代码
Person.m
#import "Person.h"
@implementation Person
- (void)setAge:(int)age
{
if(age > 0) //封装的set方法可以过滤一些不合理的值
{
_age = age;
}
}
- (int)age
{
return _age;
}
@end
复制代码
main.m
/*
封装:将成员变量的访问封装成set方法和get方法
好处:
* 将类的数据与实现分离,隐藏实现细节
* 能在封装的代码中过滤一些不合理的值
*/
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
Person *p = [Person new];
[p setAge:10]; //要通过封装的set方法来访问成员变量
//NSLog(@"_age = %d" , p->_age); //类的成员变量默认作用域为protected,只能在类或子类中直接访问,不能在类外直接访问
NSLog(@"_age = %d" , [p age]);
[p setAge:-1]; //不合理的年龄值-1将被过滤掉
NSLog(@"_age = %d" , [p age]);
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2