黑马程序员技术交流社区
标题:
对象作为参数连续传递(1)小例
[打印本页]
作者:
mazhichao
时间:
2015-6-30 17:30
标题:
对象作为参数连续传递(1)小例
/*
士兵开枪 枪射击子弹
枪类
类名:Gun
属性:型号(_size),子弹个数(_bulletCount)
方法:射击
士兵类
类名:Soldier
属性:姓名(_name),life,level(等级)
方法:跑,蹲 开枪,跳
*/
#import <Foundation/Foundation.h>
#pragma mark 抢类声明
@interface Gun:NSObject
{
//实例变量
@public;
NSString *_size;//枪的型号
int _bulletCount;//子弹数量
}
//行为
-(void)shoot;
@end
#pragma mark 抢类实现
@implementation Gun
-(void)shoot
{
//每射击一次子弹数量减1
if (_bulletCount>0) {
_bulletCount--;
NSLog(@"%@正在射击,还剩余子弹数%d",_size,_bulletCount);
}
else
{
NSLog(@"已经没有子弹了");
}
}
@end
#pragma mark 士兵声明
@interface Soldier:NSObject
{
@public;
NSString *_name;//士兵姓名
int _lift;//血量
int _level;//等级
}
//行为
-(void)fireByGun:(Gun *)gun;
@end
#pragma mark 士兵实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun
{
[gun shoot];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
//创建一个士兵
Soldier *s = [Soldier new];
s->_name = @"三多";
s->_lift = 99;
s->_level =3;
//创建抢的对象
Gun *gun = [Gun new];
gun->_size = @"小米步枪";
gun->_bulletCount = 3;
//士兵开枪
[s fireByGun:gun];
}
return 0;
}
作者:
mazhichao
时间:
2015-6-30 18:03
***自己补充了一下
/*
士兵开枪 枪射击子弹
枪类
类名:Gun
属性:型号(_size),子弹个数(_bulletCount)
方法:射击
士兵类
类名:Soldier
属性:姓名(_name),life,level(等级)
方法:跑,蹲 开枪,跳
子弹类
类名:Bullet
属性:子弹数(bulletCount),型号(_size)
*/
#import <Foundation/Foundation.h>
#pragma mark 子弹类声明
@interface Bullet:NSObject
{
//实例变量
@public;
NSString *_size;//子弹的型号
int _bulletCount;//子弹数量
}
@end
#pragma mark 子弹类实现
@implementation Bullet
@end
#pragma mark 抢类声明
@interface Gun:NSObject
{
//实例变量
@public;
NSString *_size;//枪的型号
}
//行为
-(void)shoot:(Bullet *)bullet;
@end
#pragma mark 抢类实现
@implementation Gun
-(void)shoot:(Bullet*)bullet
{
//每射击一次子弹数量减1
if (bullet->_bulletCount>0) {
bullet->_bulletCount--;
NSLog(@"%@正在射击,还剩余子弹数%d",bullet->_size,bullet->_bulletCount);
}
else
{
NSLog(@"已经没有子弹了");
}
}
@end
#pragma mark 士兵声明
@interface Soldier:NSObject
{
@public;
NSString *_name;//士兵姓名
int _lift;//血量
int _level;//等级
}
//行为
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
@end
#pragma mark 士兵实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet
{
[gun shoot:bullet];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
//创建一个士兵
Soldier *s = [Soldier new];
s->_name = @"三多";
s->_lift = 99;
s->_level =3;
//创建抢的对象
Gun *gun = [Gun new];
//创建子弹类
Bullet *myBullet = [Bullet new];
myBullet->_size = @"xiaomi";
myBullet->_bulletCount = 3;
//士兵开枪
[s fireByGun:gun andBullet:myBullet];
}
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2