黑马程序员技术交流社区
标题:
对象作为方法的参数的连续传递
[打印本页]
作者:
小蜗19910109
时间:
2015-10-14 00:33
标题:
对象作为方法的参数的连续传递
#import <Foundation/Foundation.h>
#pragma mark - 子弹类
//子弹类的声明
@interface Bullet:NSObject
{
@public
//子弹个数
int _bulletCount;
//子弹的型号
NSString *_model;
}
@end
//子弹类的实现
@implementation Bullet
@end
#pragma mark - 枪类
//枪类的声明
@interface Gun:NSObject
{
@public
//型号
NSString *_size;
}
//行为
-(void)shoot:(Bullet *)bullet;
@end
//枪类的实现
@implementation Gun
//行为
-(void)shoot:(Bullet *)bullet{
//开枪应该做哪些事情?
//如果 子弹的个数 > 0 可以减-1
if(bullet->_bulletCount>0){
// 1) 子弹数 -1
bullet->_bulletCount --; // bullet->_bulletCount = billet->_bulletCount -1;
// 2) 打印机剩余的子弹数
NSLog(@"biu biu biu....剩余子弹数:%d",bullet->_bulletCount);
}else{
NSLog(@"都没有子弹了,你还突突个毛线~");
}
}
@end
#pragma mark - 士兵类
//士兵类的声明
@interface Soldier:NSObject
{
@public
// 姓名(_name)
NSString *_name;
// life
int _life;
// level(等级)
int _level;
}
//开枪的行为
//传递了两个参数
// 第一个为:枪
// 第二个为:子弹
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *) bullet;
@end
//士兵类的实现
@implementation Soldier
//开枪的行为
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet{
//让枪射击
//把子弹传递给 枪
[gun shoot:bullet];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建大兵
Soldier *xsd = [Soldier new];
xsd->_name = @"许三多";
//创建一个子弹类
Bullet *bullet = [Bullet new];
bullet->_bulletCount = 3;
//创建一把枪
Gun *ak47 = [Gun new];
ak47->_size = @"ak-47";
[xsd fireByGun:ak47 andBullet:bullet]; //士兵开枪
[xsd fireByGun:ak47 andBullet:bullet]; //士兵开枪
[xsd fireByGun:ak47 andBullet:bullet]; //士兵开枪
[xsd fireByGun:ak47 andBullet:bullet]; //士兵开枪
}
return 0;
}
作者:
lumangmang
时间:
2015-10-15 11:54
加油!一起努力吧!写的很好啊
作者:
小蜗19910109
时间:
2015-10-15 22:29
lumangmang 发表于 2015-10-15 11:54
加油!一起努力吧!写的很好啊
加油,一起努力!!!!!!!!!
作者:
小蜗19910109
时间:
2015-10-15 22:30
加油,一起努力!!!!!!!!!!!!!!!!!
作者:
sclea
时间:
2015-10-15 22:43
注释写的真到位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2