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 ...
随机推荐
- 洛谷P2678跳石头(提高)
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点. 在起点和终点之间,有 N 块岩石( ...
- 课时46:魔法方法:描述符(property的原理)
目录: 一.描述符(property的原理) 二.课时46课后习题及答案 ********************************** 一.描述符(property的原理) ********* ...
- HttpRuntime.Cache再学习
摘抄: 可以看到:读缓存,其实是在调用Get方法,而写缓存则是在调用Insert方法的最简单的那个重载版本. 注意了:Add方法也可以将一个对象放入缓存,这个方法有7个参数,而Insert也有一个签名 ...
- SimpleMDE编辑器 + 提取HTML + 美化输出
开发步骤: 1. 安装和引入(npm或者bower都可以) $ bower install simplemde --save //css - debug目录下为开发版本 <link rel=&q ...
- Hexo-设置阅读全文
最近使用Hexo搭建了自己的博客,并且使用了简洁但是强大的NexT主题.这里介绍一下NexT主题下设置在首页显示一篇文章的简介,在简介后面提供一个链接阅读全文来进入文章的详情页.效果请看 我的小窝 在 ...
- 接水果(fruit)
接水果(fruit) 风见幽香非常喜欢玩一个叫做 osu! 的游戏,其中她最喜欢玩的模式就是接水果.由于她已经 DT FC 了 The big black,她觉得这个游戏太简单了,于是发明了一个更加难 ...
- [bzoj2301][HAOI2011]Problem B —— 莫比乌斯反演+容斥原理
题意 给定a, b, c, d, k,求出: \[\sum_{i=a}^b\sum_{j=c}^d[gcd(i, j) = k]\] 题解 为方便表述,我们设 \[calc(\alpha, \beta ...
- vue 项目 webstrom IDE格式化代码规则遵循eslint设置
首先vue-cli生成了一个项目,开启了eslint的检测, 但是根据webstorm的快捷格式化代码 ctrl+alt+L会造成eslint报错. 解决办法一: 编辑器打开文件 首先,在编辑器里面要 ...
- 深入解析Linux内核I/O剖析(open,write实现)
Linux内核将一切视为文件,那么Linux的文件是什么呢?其既可以是事实上的真正的物理文件,也可以是设备.管道,甚至还可以是一块内存.狭义的文件是指文件系统中的物理文件,而广义的文件则可以是Linu ...
- java基础练习 14
import java.util.Scanner; public class Fourtheen { /*打印出所有的"水仙花数",所谓"水仙花数"是指一个三位 ...