OC-3-三大特性:封装
来源:互联网 发布:mcafee livesafe知乎 编辑:程序博客网 时间:2024/06/06 02:16
---------- CornerFly真诚期待与您交流! ----------
面向对象的三大特性包括封装、继承、多态。
一、封装
在编程的过程中,有时候我们需要在给成员变量赋值的时候,对赋的值进行过滤掉不合理的值,因为在方法中可以调用成员变量,通过提供一些方法给成员变量设置值或者获取
成员变量的值,把内部的成员变量和结构保护起来,这就是面向对象中的封装。
二、set方法
@public的成员可以被随意赋值,成员变量尽量不要用@public,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如
僵尸的生命值不能为负数。
1、作用
提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应地过滤。
2、命名规范
*方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写。
*形参名称不要跟成员变量同名。
三、get方法
1、作用:返回对象内部的成员变量。
2、命名规范
get方法的名称一般就跟成员变量同名。
3、成员变量的命名规范
1>成员变量都以下划线 _ 开头
2>可以跟get方法的名称区分开
3>可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
四、封装的好处
1>过滤不合理的值
2>屏蔽内部的赋值过程
3>让外界不必关注内部的细节
五、代码示例
#import <Foundation/Foundation.h>@interface Student : NSObject{// 成员变量尽量不要用@public// @publicint age;// 只读(readonly)只允许外界访问我的no,不允许修改我的noint no; // 只需要提供get方法}- (void)setAge:(int)age;- (int)age;- (void)study;@end@implemention Student// set方法的实现- (void)setAge:(int)newAge{// 对传进来的参数进行过滤if (newAge <= 0){newAge = 1;}age = newAge; }// get方法的实现- (int)age{return age;}- (void)study{age = 10;NSLog(@"%d岁的学生在学习", age);}@endint main(){Student *stu = [Student new];[stu setAge:10];NSLog(@"学生的年龄是%d岁", [stu age]);//stu->age = 20; 不能用了因为注释掉了@public//[stu study];return 0;}
六、练习
设计一个成绩类
*C语言成绩(可读可写)
*OC成绩(可读可写)
*总分(只读)
*平均分(只读)
#import <Foundation/Foundation.h>@interface Score : NSObject{int _cScore; // C语言成绩int _ocScore; // OC成绩int _totalScore; // 总分int _averageScore; //平均分 }- (void)setCScore:(int)cScore;- (int)cScore;- (void)setOcScore:(int)ocScore;- (int)ocScore;- (int)totalScore;- (int)averageScore;@end@implementation Score- (void)setCScore:(int)cScore{_cScore = cScore;// 计算总分_totalScore = _cScore + _ocScore;// 平均分_averageScore = _totalScore/2;}// 监听成员变量的改变- (int)cScore{return _cScore;}- (void)setOcScore:(int)ocScore{_ocScore = ocScore;// 计算总分_totalScore = _cScore + _ocScore;// 平均分_averageScore = _totalScore/2;}- (int)ocScore{return _ocScore; }- (int)totalScore{return _totalScore;}- (int)averageScore{return _averageScore;}@endint main(){Score *s = [Score new];[s setCScore:90];[s setOcScore:100];int a = [s totalScore];NSLog(@"总分是%d", a);return 0;}
0 0
- OC-3-三大特性:封装
- OC三大特性之封装
- OC的三大特性--封装
- OC三大特性之封装
- OC基础—三大特性之封装
- 黑马程序员——OC三大特性之封装
- OC温故:类的三大特性(封装,继承,多态)
- 黑马程序员——OC三大特性-5:封装
- OC语言-三大特性之封装继承多态
- OC温故:类的三大特性(封装,继承,多态)
- 黑马程序员--OC的三大特性 封装 继承 多态
- Objective C(OC)面向对象三大特性之:封装
- OC三大特性之一:封装的介绍
- OC中的类的三大特性:继承,封装,多态
- OC---三大特性
- OC三大特性
- OC三大特性
- 三大特性--封装
- vim中插入多行一样的字符
- 朴素贝叶斯文本分类java实现
- [Android基础知识] 如何在eclipse里设置真机调试
- eclipse配置jdk
- 解决java调试工具无法连接jvm
- OC-3-三大特性:封装
- 新手入门:JSP基本语法与简单表单处理
- Netty 学习笔记 三 使用Pojo代替Bytebuf
- 三种模式分解的等价定义
- 东南大学CTF之Flag你在哪里?
- 指令学习
- 第十二周项目1- 教师兼干部类
- 获取进程的内核转储
- 区间重叠