黑马程序员——OC基础 三种特性之封装
Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
(以下内容是对黑马苹果入学视频的个人知识点总结)
三种特性之一封装
(一)set方法和get方法
1) set方法
1>作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
2> 命名规范:
①方法名必须以set开头
②set后面跟上成员变量的名称,成员变量的首字母必须大写
③返回值一定是void
④一定要接收一个参数,而且参数类型跟成员变量类型一致
⑤形参的名称不能跟成员变量名一样
2) get方法
1>作用:返回对象内部的成员变量
2> 命名规范:get方法的名称一般就跟成员变量同名
①肯定有返回值,返回值类型肯定与成员变量类型一致
②方法名跟成员变量名一样
③不需要接收任何参数
3) 成员变量的命名规范
1>成员变量都以下划线 _ 开头
2>可以跟get方法的名称区分开
3>可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
#import <Foundation/Foundation.h> @interface Student : NSObject
{
int age;
int no; // 只需要提供get方法
} - (void)setAge:(int)newAge; - (int)age; - (void)study; @end @implementation Student // set方法的实现
- (void)setAge:(int)newAge
{
// 对传进来的参数进行过滤
if (newAge <= )
{
newAge = ;
} age = newAge;
} - (int)age
{
return age;
} - (void)study
{
NSLog(@"%d岁的学生在学习", age);
} @end int main()
{
Student *stu = [Student new]; [stu setAge:]; NSLog(@"学生的年龄是%d岁", [stu age]); [stu study]; return ;
}
封装的好处
1>过滤不合理的值
2>屏蔽内部的赋值过程
3>让外界不必关注内部的细节
(二)类方法
1)直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类\对象方法列表)
2)类方法和对象方法的对比
1>对象方法
①以减号-开头
②只能让对象调用,没有对象,这个方法根本不可能被执行
③对象方法能访问实例变量(成员变量)
2>类方法
①以加号+开头
②只能用类名调用,对象不能调用
③类方法中不能访问实例变量(成员变量)
④使用场合:当不需要访问成员变量的时候,尽量用类方法
注意:类方法和对象方法可以同名
(三)self关键字
1> 成员变量和局部变量同名
①当成员变量和局部变量同名时,采取就近原则,访问的是局部变量
②用self访问成员变量,区分同名的局部变量
2> 使用细节
1) 出现的地方:所有的OC方法中(对象方法\类方法),不能出现在函数
2) 作用
①使用 "self->成员变量名" 访问当前方法调用的成员变量
使用 "[self 方法名];" 来调用方法(对象方法\类方法)
②低级错误:用self去调用函数
③类方法中用self调用对象方法,对象方法中用self调用类方法
④self死循环
3)常见错误
①低级错误:用self去调用函数
②类方法中用self调用对象方法,对象方法中用self调用类方法
③self死循环
@implementation Person
- (void)test
{
NSLog(@"调用了-test方法"); // 会引发死循环
[self test];
}
黑马程序员——OC基础 三种特性之封装的更多相关文章
- 黑马程序员——JAVA基础之简述 类的封装
------- android培训.java培训.期待与您交流! ---------- 类的封装(Encapsulation) 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装优 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员_java基础笔记(10)...JDK1.5的新特性
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1:静态导入.2:for—each循环.3:自动装箱/拆箱.4:可变参数.5:枚举 ...
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- 黑马程序员_Java基础:网络编程总结
------- android培训.java培训.期待与您交流! ---------- Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员_Java基础组成
Java语言基础组成 2.1关键字 main不是关键字,但被JVM所识别的名称. 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词. 特点:关键字中所有字母都为小写. 用于定义数据类型的关 ...
- 黑马程序员_Java基础视频-深入浅出精华版--PPT 文件列表
\day01\code\第一章_Java概述.ppt;\day01\resource\资料\50道编程题(有精力的同学看看).doc;\day01\resource\资料\Sun_Java程序员认证考 ...
随机推荐
- AraxisMerge和beyond Compare做git mergetool配置
打开.gitconfig文件,加入如下代码即可 [diff] external = /Applications/AraxisMerge.app/Contents/Utilities/araxisgit ...
- 隐藏原生html5 video controls
隐藏原生html5 video controls 凤凰视频焦点项目mobile html5播放器测试时bug,由于没有用原生的controls而是自己写的custom controls,虽然设置了co ...
- TAG-9F10 发卡行相关数据(转)
Tag-9F10 发卡行相关数据 9F10-发卡行应用数据 标签:9F10 字节1 –“ 07” 字节2 –DKI 长度:var10-25字节 字节3 – 密文版本号 格式:b 字节4 –“ 03” ...
- cfDNA(circulating cell free DNA)全基因组测序
参考资料: [cfDNA专题]cell-free DNA在非肿瘤疾病中的临床价值(好) ctDNA, cfDNA和CTCs有什么区别吗? cfDNA你懂多少? 新发现 | 基因是否表达,做个cfDNA ...
- Android实现帧动画,以及出场时的动画
最近有个小需求,在数据上传的时候加一个上传的动画,然后就寻思着自己写一个帧动画 上传开始的时候调用动画,上传结束通知容器将其删除(这个方法应该不会太耗内存),然后吐槽下gif图片还是我自己一帧一帧从p ...
- 正则匹配中 ^ $ 和 \b 的区别
正则匹配中 ^ $ 和 \b 的区别 ^和$分别代表字符串的开始和结束,因此^\d$只能匹配包含一个数字的字符串\b代表单词边界,其前后必须是不同类型的字符,可以组成单词的字符为一种类型,不可 ...
- 推荐10款免费的在线UI测试工具
发布网站之前至关重要的一步是网站测试.网站测试要求我们全面地运行网站并通过所有基本测试,如响应式设计测试.安全测试.易用性测试.跨浏览器兼容性.网站速度测试等. 网站测试对SEO.搜索引擎排名.转换率 ...
- 不刷新页面获取HTML进行显示
$.ajax({ url: "请求地址", dataType: "text", type: "GET" ...
- java根据标点英文分词
最近学习java字符串部分,用正则表达式做了一个简单的统计单词出现次数的小程序,目前只能统计英文. 整个程序包括三个包,分别为output,run,wordcount wordCount包 执行单词统 ...
- kettle 使用JAVA代码进行执行
kettle 设计完成之后,可以在设计工具中进行调用,也可以使用java代码进行调用. 1.通过文件方式执行转换. public static void runTransfer(String[ ...