黑马程序员——ObjectiveC基础——对象作为方法的参数连续传递
来源:互联网 发布:php后端开发面试 编辑:程序博客网 时间:2024/05/09 03:13
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、对象和方法的关系
1.对象可以作为方法的参数
小明用iPad 迷你看电影
代码实现:
#import <Foundation/Foundation.h>@interface Ipad : NSObject{ @public NSString *_typeNum;}@end@implementation Ipad@end@interface Person : NSObject{ @public NSString *_name;}-(void)seeMovie:(Ipad *) ipad;@end@implementation Person-(void)seeMovie:(Ipad *)ipad{ NSLog(@"%@用%@看电影",_name,ipad->_typeNum);}@endint main(int argc, const char * argv[]) { @autoreleasepool { Ipad *i = [Ipad new]; Person *p = [Person new]; i->_typeNum = @"Ipad Mini"; p->_name = @"小明"; [p seeMovie:i]; //小明用Ipad Mini看电影 } return 0;}
2.对象可以作为方法的返回值
母鸡下蛋
代码实现:
#import <Foundation/Foundation.h>@interface Egg : NSObject{ @public float _weight;}@end@implementation Egg@end@interface Hen : NSObject{ @public NSString *_name;}-(Egg *)lay:(float)weight;@end@implementation Hen-(Egg *)lay:(float)weight{ Egg *e = [Egg new]; e->_weight = weight; return e;}@endint main(int argc, const char * argv[]) { @autoreleasepool { Hen *hen = [Hen new]; hen->_name = @"Tim"; Egg *egg = [hen lay:20.50f]; NSLog(@"母鸡%@下了一个%.2fg的蛋",hen->_name,egg->_weight); //母鸡Tim下了一个20.50g的蛋 } return 0;}
二、对象最为方法的参数连续传递
具体问题:士兵用枪射击。
士兵类:
属性:年龄、姓名
方法:开枪
枪类:
属性:型号
方法:射击
弹夹类:
属性:子弹口径,子弹数量
代码:
#import <Foundation/Foundation.h>#pragma mark 弹夹类@interface BulletBox:NSObject{ @public NSString *_size; int _bulletCount;}@end@implementation BulletBox@end#pragma mark 枪类@interface Gun:NSObject{ @public NSString *_size;}-(void) shoot:(BulletBox *)bulletbox;@end@implementation Gun-(void) shoot:(BulletBox *)bulletbox{ if(bulletbox->_bulletCount>0){ bulletbox->_bulletCount--; NSLog(@"\n开枪射击,嘭...(枪的型号:%@,子弹口径:%@,剩余子弹:%d)",_size,bulletbox->_size,bulletbox->_bulletCount); }else{ NSLog(@"\n没有子弹了,请更换弹夹!!"); }}@end#pragma mark 士兵类@interface Soldier:NSObject{ @public NSString *_name; int _life;}-(void) fire:(Gun *)gun and:(BulletBox *)bulletbox;@end@implementation Soldier-(void) fire:(Gun *)gun and:(BulletBox *)bulletbox{ [gun shoot:bulletbox];}@end#pragma mark -int main(int argc, const char * argv[]) { @autoreleasepool { //实例化弹夹 BulletBox *bulletbox = [BulletBox new]; bulletbox->_size = @"0.5mm"; bulletbox->_bulletCount = 5; //实例化枪 Gun *gun = [Gun new]; gun->_size = @"AK47"; //实例化士兵 Soldier *soldier = [Soldier new]; soldier->_name = @"卫龙"; soldier->_life = 100; //连开7枪 [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; [soldier fire:gun and:bulletbox]; } return 0;}
运行结果:
开枪射击,嘭…(枪的型号:AK47,子弹口径:0.5mm,剩余子弹:4)
开枪射击,嘭…(枪的型号:AK47,子弹口径:0.5mm,剩余子弹:3)
开枪射击,嘭…(枪的型号:AK47,子弹口径:0.5mm,剩余子弹:2)
开枪射击,嘭…(枪的型号:AK47,子弹口径:0.5mm,剩余子弹:1)
开枪射击,嘭…(枪的型号:AK47,子弹口径:0.5mm,剩余子弹:0)
没有子弹了,请更换弹夹!!
没有子弹了,请更换弹夹!!
分析:弹夹类作为参数首先通过枪类的shot方法传入,然后再通过士兵类的fire方法传入士兵类。弹夹类对象作为函数的参数实现了连续传递。
0 0
- 黑马程序员——ObjectiveC基础——对象作为方法的参数连续传递
- 黑马程序员--对象作为参数连续传递
- 黑马程序员——ObjectiveC基础——对象关系
- 黑马程序员——ObjectiveC基础——NSString对象
- 黑马程序员--对象作为方法的参数连续传递的练习
- 对象作为方法的参数连续传递
- 黑马程序员——ObjectiveC基础——构造方法和自定义构造方法
- 黑马程序员——ObjectiveC基础——类对象和SEL类型
- 对象作为方法的参数连续的传递
- 对象作为方法的参数进行连续传递一
- 对象作为方法的参数进行连续传递二
- 对象作为方法的参数进行连续传递三
- OC 对象作为方法的参数连续传递
- 黑马程序员——java基础——方法、数组、二维数组、参数传递
- 黑马程序员之ios学习总结——08 ObjectiveC语言的类和对象、类的三大特性
- 黑马程序员——ObjectiveC基础——Self与Super
- 黑马程序员——ObjectiveC基础——多态与id类型
- 黑马程序员——ObjectiveC基础——动态类型检测
- Easyui Datagrid使用小例
- vim复制
- GIT 在提交之前撤销add操作
- android 自定义listview无法响应点击事件OnItemClickListener
- lintcode-回文链表-223
- 黑马程序员——ObjectiveC基础——对象作为方法的参数连续传递
- spring mvc 500错误
- define
- 2016校招面试题汇总
- JAVA I/O 系统
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- hive 创建表的三种方式
- 流程控制语句
- D3D自学笔记(山峰)