黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1    封装
封装指的是將对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法对内部信息的操作和访问。OC的封装特性需要通过使用访问控制符来实现。

#import <Foundation/Foundation.h>@interface Sturent : NSObject
{int _age;double _weight;
}
-(void) test;
-(void) setAge:(int)NewAge;
-(int)age;-(void) setWeight:(double)NewWeight;
-(double)_weight;
@end@implementation Sturent-(void) setAge:(int)NewAge
{if (NewAge<=0){NewAge=1;}_age = NewAge;
}
-(int)age
{return _age;
}
-(void)setWeight:(double)NewWeight
{_weight = NewWeight;
}
-(double)_weight
{return _weight;
}-(void) test
{NSLog(@"年龄为%d体重为%f的学生在学习",_age,_weight);
}@endint main()
{Sturent *stu = [Sturent new];[stu setAge:23];[stu setWeight:75.2];[stu test];
}

  

1.1    访问控制符
1、@private:当前类访问权限。如果类的成员变量使用@private访问控制符来限制,则这个成员变量只能在当前类的内部被访问。这个访问控制符用于彻底隐藏成员变量。在类的实现部分定义的成员变量相当于默认使用这种访问权限。
2、@package:框架类访问权限。如果类的成员变量使用@package访问控制符来限制,则当前类或者同一框架中的其他类能够访问这个成员变量。这个访问控制符用于部分隐藏成员变量。
3、@protected:子类访问权限。如果类的成员变量使用@protected访问控制符来限制,则当前类或者其子类能够访问这个成员变量。这个访问控制符用于部分隐藏成员变量。
4、@public:公共访问权限。如果类的成员变量使用@public访问控制符来限制,则所有的类都能够访问这个成员变量。这个访问控制符用于彻底暴露成员变量,一般不建议这么做。
1.2    set和get方法
类里面的绝大部分成员变量应该使用@private进行限制,提供set和get方法访问该成员变量。
set方法
1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
2.命名规范:
1> 方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
5> 形参的名称不能跟成员变量名一样
get方法
1.作用:返回对象内部的成员变量
2.命名规范:
1> 肯定有返回值,返回值类型肯定与成员变量类型一致
2> 方法名跟成员变量名一样
3> 不需要接收任何参数

#import <Foundation/Foundation.h>typedef enum {SexMan,SexWoman
}Sex;@interface Person : NSObject
{int _age;Sex _sex;
}
// age的set和get方法
- (void)setAge:(int)age;
- (int)age;// sex的set和get方法
- (void)setSex:(Sex)sex;
- (Sex)sex;@end@implementation Person- (void)setAge:(int)age
{_age = age;
}
- (int)age;
{return _age;
}- (void)setSex:(Sex)sex
{_sex = sex;
}- (Sex)sex
{return _sex;
}@endint main()
{Person *p = [Person new];[p setAge:23];[p setSex:SexMan];[p age];[p sex];return 0;
}

  

转载于:https://www.cnblogs.com/iceshan/p/4492855.html

18-黑马程序员------OC语言学习笔记---封装相关推荐

  1. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  2. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  3. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  4. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

  5. 【黑马程序员新版Linux学习笔记】Linux系统实用操作命令——操作演示

    [黑马程序员新版Linux学习笔记]Linux 零基础快速入门: (一)Linux基本命令--操作演示 (二)Linux用户和权限 -- 操作演示 (三)Linux 小技巧快捷键 (四)Linux系统 ...

  6. 12-黑马程序员------C 语言学习笔记--- C语言指针与函数

    黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培 ...

  7. 尚硅谷+黑马程序员MongoDB视频学习笔记(一)

    本学习笔记是来源于学习B站上的尚硅谷和黑马的MongoDB教学视频而做的知识总结. 一.数据库(Database) 数据库是按照数据结构来组织.存在和管理数据的仓库.说白了,数据库就是存在数据的仓库. ...

  8. 【黑马程序员】SpringBoot2学习笔记

    1.SpringBoot的前菜 1.1 发展沿革 2013年,Pivotal团队开始研发SpringBoot. 2014年4月,发布全新开源的轻量级框架的第一个SpringBoot版本. 1.2 特点 ...

  9. 黑马程序员机器学习Day2学习笔记

    一.转换器和预估器 二. KNN算法 网格搜索和交叉验证 KNN案例:Facebook预测签到位置 朴素贝叶斯 联合概率.条件概率与相互独立 决策树 信息熵 回顾传统机器学习算法流程: 1.获取数据 ...

  10. 黑马程序员——C语言学习——概述

    -----------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ----------- OS系统简介 l苹果公司专门为苹果电脑设计的操作系统 l以坚如磐石的UNIX为 ...

最新文章

  1. 常见四大类型视频接线DP、HDMI、DVI、VGA的比较
  2. python函数式编程思想_以python为例,浅谈函数式编程思想
  3. vuex - 基础篇
  4. Unity笔记(正版全阶段)目录
  5. android加载声音文件,Android是在应用程序中加载和播放声音的最快方式
  6. 附件中可能包含对计算机有害的病毒.附件可能无法正确显示,广西成人高校计算机实用基础统考理论试题(A卷)...
  7. maven 生成本地库_在2017年从Maven工件生成P2存储库
  8. python核心编程笔记chapter 3
  9. 形式化方法|形式化方法对软件开发的挑战:历史与发展
  10. 【registry】 javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
  11. [蓝桥杯]试题 基础练习 芯片测试
  12. ssh连接缓慢 ssh连接失败问题 Linux 脚本解决ssh连接缓慢问题,windows解决本地ssh连接失败
  13. 深入理解Java回调函数
  14. shark恒破解视频的笔记
  15. 注塑机结构及辅助设备详解
  16. 有趣的JS加密(一)AA加密颜文字加密
  17. NAT ALG原理与应用
  18. CocosCreator图片资源加密解密
  19. flutter快速入门,一周搞定前后端,上线完毕
  20. java颜色识别_Java颜色检测

热门文章

  1. 防止恶意登录的设计思路
  2. Swift新手教程3-字符串String
  3. java基础学习及总结
  4. webservice4
  5. Create umbraco website-On the road of umbraco (1)
  6. SSIS常用的包—通用的属性
  7. Spring AOP的实现思想之动态代理
  8. django基础 第一章 环境搭建
  9. 8. vue 的生命周期
  10. 中级 PHP 知识点汇总