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 ...
随机推荐
- Spring Boot多数据源配置(二)MongoDB
在Spring Boot多数据源配置(一)durid.mysql.jpa 整合中已经讲过了Spring Boot如何配置mysql多数据源.本篇文章讲一下Spring Boot如何配置mongoDB多 ...
- 编译Code::Blocks源码 with MinGW on Win
Build Code::Blocks源码 ---By 狂徒归来 CodeBlocks是一款非常优秀的IDE !可惜的是没有64位的版本,而且本来是轻量级别的IDE就应该够轻,能够像记事本工具一样,迅速 ...
- Oracle常用数据库系统表单以及SQL的整理
因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类的东西. 通常都是自己瞎搞搞,也就懂一点皮毛 ...
- eclipse 运行错误:在类XXX中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application
新建了一个类Hello: 代码: 第一次运行报错: 点击关闭该类的界面时出现: 点击是,然后再次打开,可以正确执行,结果为: 这是为什么....,后来发现了原因:是每次运行或调试前没有自动保存编辑的内 ...
- 使用common-fileUpload实现文件上传
通过common-fileUpload文件上传组件,可以实现上传文档.图片等资料.根据程序的不同要求,它可以有多种方式的应用. 我们这里介绍一种简单的例子,来实现文件上传功能. 准备: 引入相关组建的 ...
- Hexo博客收录百度和谷歌-基于Next主题
Hexo博客收录百度和谷歌-基于Next主题(应该是比较全面的一篇教程) 我们的博客做出来当然是希望别人来访问,但是Github和Coding都做了防爬虫处理,这样子我们博客可能就无法被搜索引擎收录, ...
- 【Python】- pytharm 中import时无法识别自己写的程序
右键点击自己的工作空间,找下面的Mark Directory as(将目录标记为) 选择Source Root,就可以解决上面的问题了,如图
- hdu 1007 Quoit Design (最近点对问题)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 洛谷 P3168 [CQOI2015]任务查询系统 解题报告
P3168 [CQOI2015]任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. 超级计算机中的任务用三元组\((S_i,E_i,P_i) ...
- JavaScript各变量类型的判断方法
我们很容易被漂亮的代码吸引,也不知不觉的在自己的代码库中加入这些.却没有冷静的想过它们的优劣.这不,我就收集了一系列形如 "是否为……?" 的判断的boolean函数. isNul ...