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 ...
随机推荐
- 如何将自己写的代码上传到github上
忙活了一下午终于成功把代码上传到github上. 接下来就是我上传代码的步骤: ①首先注册github账号,登录,创建新仓库 ,点击+,点击new repository 得到如下页面,填写仓库名,自己 ...
- Vue2 全局过滤器(vue-cli)
先看官方简介: 当前组件注册: export default { data () { return {} }, filters:{ orderBy (){ // doSomething }, uppe ...
- vue 搜索匹配
computed: { broSeachData: function() { var browesData = this.browesData, searchVal = this.searchVal; ...
- POJ 1061 青蛙的约会 | 同余方程和exGcd
题解: 要求s+px=t+qx (mod L) 移项 (p-q)x=t-s (mod L) 等价于 (p-q)x+Ly=t-s 即ax+by=c的方程最小非负根 exGcd后乘个C #include& ...
- BZOJ2716 [Violet 3]天使玩偶 【CDQ分治】
题目 输入格式 输出格式 输入样例 //样例太长就不贴了.... 输出样例 //见原题 提示 题解 我们将曼哈顿距离式子中的绝对值去掉,每次只考虑x,y比当前点小的更新答案. 为了使所有点都对答案进行 ...
- babelrc配置
{ "presets": [ ["env", { // webapck2/3必须配置,放弃使用babel的模块化,使用webpack的模块化,webpack1不 ...
- webpack配置优化
1.使用alias简化路径 alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src') } 2.overlay界面弹出编译错误 devSer ...
- 块元素包裹img空隙问题
解决方法 1.img设为block2.img对齐方式vertical-align:bottom(middle/top),不是baseline就行3.父容器font-size:0或line-height ...
- WebStrom Sass 编译配置 windows
第一步: 先安装Ruby下载 一路next 安装完成后打开开始菜单 打开后输入 gem install sass sass -v 出现版本号说明成功 第二部配置webstorm 在webstorm中s ...
- spring管理事务回滚
spring 事务回滚 1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: ? 1 2 3 4 5 6 7 public method() { ...