《Objective-C基础教程》第5章 复合
来源:互联网 发布:知乎 满船清梦压星河 编辑:程序博客网 时间:2024/04/28 03:55
5.1 什么是复合
复合(composition):将多个组件组合在一起,配合使用,从而得到完整的作品。
在Objective-C中,复合是通过包含作为实例变量的对象指针实现的
5.2 自定义NSLog()
NSLog(@"%@",Object)//使用%@格式说明符来输出对象
if(self=[super init])//为了让超类将所有需要的初始化工作一次性完成,需要调用[super init]
init方法返回的值(id类型数据)就是被初始化对象
[super init]返回的结果是self是Objective-C的惯例,这是为了防止超类在初始化过程中返回的对象与一开始创建的不一致。
5.3 存取方法
-(Engine *)engine//getter方法engine返回实例变量engine的当前值{ return (engine);//Objective—C中所有对象的交互都是通过指针实现的,所以engine方法返回的是一个指针}-(void)setEngine:(Engine *)newEngine//setter方法将实例变量的值赋为参数所指向的值。{ engine=newEngine;//实际上被复制的并不是engine的值,而是志向engine的指针指。即,重复调用setEngine:之后还是值存在一个engine}
实际运用这些存取方法,可编写一下代码
Engine *engine=[Engine new];[car setEngine:engine];
5.3.2 设置tires属性的存取方法
与上节类似
防御式编程(defensive programming):检查代码,并通过NSLog()输出结果
5.3.3 Car类代码的其他变化
Car类有了可以访问engine和tires变量的方法,无需再使用init方法创建两个变量。
5.4 扩展CarParts程序
利用存取方法,使用继承方式来创建新的发动机和轮胎。(例如,在getter方法中设置不同的发动机类型,在setter中将新发动赋予Engine)
5.5 复合还是继承
1、继承的类之间的关系为“is a”,例如,三角形is a 形状
2、复合的类之间的关系为“has a”,例如,汽车has a 发动机
5.6 小结
1、复合的概念
2、存取方法:setter设置对象的属性,getter获取对象的属性的值
3、Cocoa存取方法的命名规则
0 0
- 《Objective-C基础教程》第5章 复合
- 《Objective-C基础教程》第6章 源文件组织
- 《Objective-C基础教程》第7章 深入了解Xcode
- 《Objective-C基础教程》第8章 Foundation Kit 介绍
- 《Objective-C基础教程》第10章 对象初始化
- 《Objective-C基础教程》第11章 属性
- 《Objective-C基础教程》第12章 类别
- 《Objective-C基础教程》第13章 协议
- 《Objective-C基础教程》第11章 属性
- 《Objective-C基础教程》第12章 类别
- 《Objective-C基础教程》第13章 协议
- Objective-C基础教程2(继承和复合)
- Objective-C基础教程2(继承和复合)
- 《Objective-C基础教程》第2章 对C的扩展
- 《Objective-C基础教程》第8章 Foundation Kit介绍
- 《Objective-C基础教程》第9章 内存管理
- 《Objective-C基础教程》第10章 对象初始化
- 《Objective-C基础教程》第四章 继承
- 11208elppA
- Shell编程:批量生成缩略图
- Android 官网访问
- hdu4651 Partition
- 脱字符^替换重定向 >
- 《Objective-C基础教程》第5章 复合
- pan
- 蓝牙协议栈
- ffmpeg入门以及使用总结
- IntelliJ idea/webstorm web 手机不能连接测试 63342端口
- Servlet和CGI的区别
- Android Xutils 框架的介绍
- hdu 2066 一个人的旅行(简单的Dijkstra)
- JAVA中转义字符