IOS之OC入门--封装
来源:互联网 发布:淘宝如何买报销假车票 编辑:程序博客网 时间:2024/04/29 16:37
为什么要封装
# import <Foundation/Foundation.h>@interface Student : NSObject{ // 成员变量尽量不要用@public // @public int age; // 只读(readonly):只允许外界访问我的no,不允许外界修改我的mo int no; // 只需要提供get方法}- (void) study;/* 1.作用:提供一个方法给外界设置age属性值,可以在方法里面对参数进行相应过滤 2.命名规范: 1> 方法名必须以set开头 2> set后面跟上成员变量的名称,成员变量的首字母必须大写 3> 返回值一定时void 4> 一定要接收一个参数,而且参数类型跟成员变量类型一致 5> 行参的名称不能跟成员变量名一样 */- (void) setAge:(int)newAge;/* get方法 1.作用:返回对象内部的成员变量 2.命名规范: 1> 肯定有返回值, 返回值类型肯定与成员变量类型一致 2> 方法名跟成员变量名一致 3> 不需要接收任何参数 */- (int)age;@end@implementation Student// set方法的实现- (void) setAge:(int)newAge{ // 对传进来的参数进行过滤 if(newAge <= 0) { newAge = 1; } age = newAge;}- (int) age{ return age;}- (void) study{ NSLog(@"%d岁的人在学习", age);}@endint main(){ Student *stu = [Student new]; // stu -> age = 10; [stu setAge:-10]; [stu study]; NSLog(@"学生的年龄为:%d岁", [stu age]); return 0;}
封装的细节
# import <Foundation/Foundation.h>typedef enum { sexMan, sexWoman}Sex;@interface Student : NSObject{ /* 成员变量的命名规范:一定要以下划线 _ 开头 作用: 1.让成员变量和get方法名称区分开 2.可以跟局部变量去分开,一看到下划线开头的变量,一般都是成员变量 */ int _no; int _sex;}- (void)setSex:(int)sex;- (Sex)sex;- (void)setNo:(int)no;- (int)no;@end@implementation Student// sex的set和get方法- (void)setSex:(int)sex{ _sex = sex;}- (Sex)sex{ return _sex;}// no的set和get方法- (void)setNo:(int)no{ _no = no;}- (int)no{ return _no;}@endint main(){ Student *stu = [Student new]; [stu setNo:1212036]; [stu setSex:sexMan]; NSLog(@"该学生是%d的,学号是:%d", [stu sex], [stu no]); return 0;}封装的练习
/* 4.设计一个成绩类 * C语言成绩(可读可写) * OC成绩(可读可写) * 总分(只读) * 平局分(只读) */# import <Foundation/Foundation.h>@interface Score : NSObject{ double _cScore; //C语言成绩 double _ocScore; //OC成绩 double _totalScore; //总分 double _averageScore; //平均分}- (void)setCScore:(double)cScore;- (double)cScore;- (void)setOcScore:(double)ocScore;- (double)ocScore;//总分- (double)totalScore;//平均分- (double)averageScore;@end@implementation Score//C语言的set和get方法- (void)setCScore:(double)cScore{ _cScore = cScore; //总分 _totalScore = _cScore + _ocScore; //平均分 _averageScore = _totalScore / 2;}- (double)cScore{ return _cScore;}//OC语言的set和get方法- (void)setOcScore:(double)ocScore{ _ocScore = ocScore; //总分 _totalScore = _cScore + _ocScore; //平均分 _averageScore = _totalScore / 2;}- (double)ocScore{ return _ocScore;}//总分的get方法- (double)totalScore{ return _totalScore;}//平均分分的get方法- (double)averageScore{ return _averageScore;}@endint main(){ Score *s = [Score new]; [s setCScore:80]; [s setOcScore:75]; NSLog(@"C语言的成绩是:%5.2f, OC成绩是:%5.2f, 总分是:%5.2f, 平均分是:%5.2f", [s cScore], [s ocScore], [s totalScore], [s averageScore]); return 0;}
0 0
- IOS之OC入门--封装
- iOS基础(oc)-封装
- ios学习--ios9 之 ReplayKit框架入门2-OC
- 黑马程序员-OC语言之封装
- IOS之OC面向对象—封装
- 【IOS】IOS快速入门之OC语法
- 黑马程序员-ios学习笔记 oc 封装
- IOS之OC入门--类方法和对象方法
- IOS学习之OC面向对象—封装
- OC之封装
- OC之封装
- iOS开发-Day14-OC封装
- IOS之路--OC之继承
- 黑马程序员---OC封装
- OC面向对象之封装
- OC之成员变量封装
- IOS之路--用oc实现类
- IOS--OC--Lesson 封装 setter getter
- Generate Parentheses
- java 开发环境的安装
- message queue & event loop
- 我要hg0088开户程序哪里找
- nyoj-895How many ways【图上dp+拓扑序】
- IOS之OC入门--封装
- XML、JSON数据结构解析
- SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名
- vs release版本
- Ubuntu14.04 kylin 忘记root密码的解决方法
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类
- hadoop HDFS结构
- spring中classpath与classpath*
- Hello World