OC语言基础之代码的封装
1.封装的注意点
1: // 成员变量尽量不要用@public
2: // @public
3: int age;
1: //@public
2: // 只读(readonly):只允许外界访问我的no,不允许外界修改我的no
3: int no; // 只需要提供get方法
2.get、set方法
1: set方法
2: 1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
3: 2.命名规范:
4: 1> 方法名必须以set开头
5: 2> set后面跟上成员变量的名称,成员变量的首字母必须大写
6: 3> 返回值一定是void
7: 4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
8: 5> 形参的名称不能跟成员变量名一样
1: get方法
2: 1.作用:返回对象内部的成员变量
3: 2.命名规范:
4: 1> 肯定有返回值,返回值类型肯定与成员变量类型一致
5: 2> 方法名跟成员变量名一样
6: 3> 不需要接收任何参数
1:
2: // set方法的实现
3: - (void)setAge:(int)newAge
4: {
5: // 对传进来的参数进行过滤
6: if (newAge <= 0)
7: {
8: newAge = 1;
9: }
10:
11: age = newAge;
12: }
13:
14: - (int)age
15: {
16: return age;
17: }
3.成员变量的命名规范:
一定要以下划线 _ 开头
作用:
1.让成员变量和get方法的名称区分开
2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量
例子
1: // sex的set和get方法
2: - (void)setSex:(Sex)sex;
3: - (Sex)sex;
4:
5: // no的set和get方法
6: - (void)setNo:(int)no;
4.封装的实际例子
1: /*
2: 4.设计一个成绩类
3: * C语言成绩(可读可写)
4: * OC成绩(可读可写)
5: * 总分(只读)
6: * 平均分(只读)
7: */
8: #import <Foundation/Foundation.h>
9:
10: @interface Score : NSObject
11: {
12: int _cScore; // C语言成绩
13: int _ocScore; // OC成绩
14:
15: int _totalScore;// 总分
16: int _averageScoe; // 平均分
17: }
18:
19: - (void)setCScore:(int)cScore;
20: - (int)cScore;
21:
22: - (void)setOcScore:(int)ocScore;
23: - (int)ocScore;
24:
25: - (int)totalScore;
26: - (int)averageScore;
27:
28: @end
29:
30: @implementation Score
31: - (void)setCScore:(int)cScore
32: {
33: _cScore = cScore;
34:
35: // 计算总分
36: _totalScore = _cScore + _ocScore;
37: _averageScoe = _totalScore/2;
38: }
39: - (int)cScore
40: {
41: return _cScore;
42: }
43:
44: - (void)setOcScore:(int)ocScore
45: {
46: _ocScore = ocScore;
47:
48: // 计算总分
49: _totalScore = _cScore + _ocScore;
50: _averageScoe = _totalScore/2;
51: }
52: // 监听成员变量的改变
53:
54: - (int)ocScore
55: {
56: return _ocScore;
57: }
58:
59: - (int)totalScore
60: {
61: return _totalScore;
62: }
63: - (int)averageScore
64: {
65: return _averageScoe;
66: }
67: @end
68:
69:
70: int main()
71: {
72: Score *s = [Score new];
73:
74: [s setCScore:90];
75: [s setOcScore:100];
76:
77: [s setCScore:80];
78:
79:
80: int a = [s totalScore];
81:
82: NSLog(@"总分:%d", a);
83:
84: return 0;
85: }
OC语言基础之代码的封装的更多相关文章
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- OC语言基础之利用property优化封装
1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- OC语言基础之NSArray
0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...
- OC语言基础之NSString
1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...
- OC语言基础之函数与方法
方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间 对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...
- OC语言基础之NSDictionary
1.NSDictionary字典的创建 1: // key value 2: // key -==> value 3: NSDictionary *dict = [NSDictionary di ...
- OC语言基础之类的本质
一.类的本质 1: // 类本身也是一个对象,是个Class类型的对象,简称类对象 2: 3: /* 4: 利用Class 创建 Person类对象 5: 6: 利用 Person类对象 创建 Per ...
随机推荐
- [0] OpenCV_Notes - 琐碎
CV_8UC1,CV_8UC2,CV_8UC3等意思 一般的图像文件格式使用的是 Unsigned 8bits,CvMat矩阵对应的参数类型就是CV_8UC1,CV_8UC2,CV_8UC3.最后的C ...
- Codeforces 1088E 树形dp+思维
比赛的时候看到题意没多想就放弃了.结果最后D也没做出来,还掉分了,所以还是题目做的太少,人太菜. 回到正题: 题意:一棵树,点带权值,然后求k个子连通块,使得k个连通块内所有的点权值相加作为分子除以k ...
- Android Canvas类介绍
当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...
- 第二阶段团队冲刺-one
今天打算做什么: 处理第一次启动服务器500的问题.
- J2EE的十三种技术——JNDI
背景: 上一篇博客中介绍了J2EE的十三种技术之一--JDBC,主要用于提供了统一访问多种数据库的方式.这篇文章我们继续介绍J2EE的技术--JNDI. JNDI: Java Naming and D ...
- Apache实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定
今天在学习PHP时,有这样的一个需求:一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定,以下是我的解决方案:对Apache进行相关的配置 解决方案一:通过端口来区分不同的虚拟主机 ①按照绑 ...
- MyBatis中使用OGNL表达式与操作符
String与基本数据类型 _parameter 自定义类型(对象) 属性名 集合 数组 array List list Map _parameter 获取集合中的一条数据 数组 array[索引] ...
- 【Luogu】P2498拯救小云公主(spfa)
题目链接 我水爆了- - 容易发现可以把两个圆之间连边,左上为起点右下为终点,最小生成树直到起点跟终点连起来,输出边权/2就行. 然后80. 并不理解为什么这可以转化成spfa求最短路,邻接矩阵暴力跑 ...
- 关于Yarn源码那些事-前传之ResourceManager篇(一)初始化
在关于Yarn那些事的博客里,介绍的主要是针对任务提交的一个动态流程说明,而其中牵涉到的一些细节问题,必须通过Resourcemanager的启动和NodeManager的启动,来更好的说明. 而本系 ...
- ROS内usb_cam包使用注意事项
1.查看摄像头支持的pixel-format: 方法: v4l2-ctl --list-formats-ext -d /dev/video0