OC语言day02-07对象作为方法参数传递

pragma mark 对象作为方法参数传递

pragma mark 概念

pragma mark 代码

#import <Foundation/Foundation.h>
/**
 穿越火线
 
 士兵
 事物名称:士兵 (Soldier)
 属性: 姓名(name),身高(height),体重(weight)
 行为: 开枪(fire),打电话(callPhone)
 枪
 事物名称: 枪(Gun)
 属性:    弹夹(clip), 型号(model)
 行为:    上弹夹(addClip)
 
 弹夹
 事物名称: 弹夹(Clip)
 属性:    子弹(Bullet)
 行为:    上子弹(addBullet)
 */
#pragma mark - 类
#pragma mark 枪


@interface Gun : NSObject
{
    @public
    int _bullet; //子弹
}
// 枪最清楚如何打 所以射击方法 是属于枪的
// 射击的方法
- (void)shoot;
@end

@implementation Gun

- (void)shoot
{
    if (_bullet > 0) {
        _bullet --;
        NSLog(@"打了一枪 还剩余%d发",_bullet);
    }
    else
    {
        NSLog(@"没有子弹了,请换弹夹");
    }
}

@end

#pragma mark 士兵
@interface Soldier : NSObject
{
    @public
    NSString *_name;
    double _height;
    double _weight;
}
//- (void)fire;
//开火
- (void)fire:(Gun *)gun;

@end

@implementation Soldier
/*
- (void)fire
{
    NSLog(@"打了一枪");
}
 */

// Gun * g = gun
- (void)fire:(Gun *)g
{
//    NSLog(@"打了一枪");
    [g shoot];
}
@end



#pragma mark main函数
int main(int argc, const char * argv[])
{
#pragma mark 7.对象作为方法参数传递
    // 1.创建士兵
    Soldier *sp = [Soldier new];
    sp->_name = @"狗蛋";
    sp->_height = 1.92;
    sp->_weight = 88.0;
    
    // 2.创建一把枪
    Gun *gun = [Gun new];
    gun->_bullet = 10;
    // 3.让士兵开枪
    //    [sp fire];
#warning 让对象作为函数的参数传递
    // 让对象作为函数的参数传递
    [sp fire:gun];  // gun 是 枪的地址
    [sp fire:gun];  // gun 是 枪的地址
    [sp fire:gun];  // gun 是 枪的地址
    [sp fire:gun];  // gun 是 枪的地址

    return 0;
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容