objective-c 封装

来源:互联网 发布:java从入门到精通mobi 编辑:程序博客网 时间:2024/05/16 05:50

/*面向对象三大特性封装,继承,多态01-封装封装的作用:1)过滤不合理的值2)屏蔽内部的赋值过程3)让外界不必关注内部的细节隐藏我们内部的一些细节,不让外界知道这些细节。把内部的赋值操作封装起来,用set和get给外界设置,赋值变量。02-弱语法oc是在运行过程中才会检测对象有没有实现相应的方法*/#import <Foundation/Foundation.h>typedef enum{SexMan,SexWomen}Sex;@interface Student:NSObject{//@public尽量不要用   @protected @private//如果内部的变量对外界是只读的不设置set//只读(readou)只允许外界访问我的no,不允许外界修改我的noint _no;//只提供get方法Sex _sex;int _age;/*成员变量的命名规范:一定要以下划线_开头作用:1)让成员变量和get方法的名称区分开2)可以跟局部变量区分开,一看到下划线的变量,一般都是成员变量*/}//set的get和set方法-(void)setSex:(Sex) sex;-(Sex)sex;/*set方法1.作用:提供一个方法给外界设置成员变量2.命名规范:1)方法名必须以set开头2)set后面跟上成员变量的名称,成员变量的首字母必须大写3)返回值一定是void4)一定要接受一个参数,而且参数类型跟成员变量类型一致5)形参的名称不能跟成员变量名一样*///set方法的声明-(void) setAge:(int) age;/*get方法1.作用:返回对象内部的成员变量2.命名规范1)肯定有返回值,返回值类型肯定与成员变量类型一致2)方法名跟成员变量名一样3)不需要接收任何参数*/-(int)age;-(void)study;@end@implementation Student-(void)study{NSLog(@"%d岁的学生在学习",_age);}//set方法的实现-(void) setAge:(int) age{//对传进来的参数进行过滤if(age<=0){_age=1;}_age=age;}-(int)age{return _age;}-(void)setSex:(Sex) sex;{_sex=sex;}-(Sex)sex{return _sex;}@endint main(){Student *stu=[Student new];[stu setAge:10];NSLog(@"%d岁的学生在学习",[stu  age]);[stu setSex:SexMan];/*枚举的输出问题:enum colour{a,b,c,d,e} colour1;colour1=a;char p[]={'a','b','c','d','e'};输出枚举的名字那么就输出 p[colour1]*/if (0==[stu sex])NSLog(@"学生性别为SexMan");else if (1==[stu sex])NSLog(@"学生性别为SexWoman");else NSLog(@"错误!");return 0;}


0 0
原创粉丝点击