------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
对象作为方法的参数
弹夹类
类名:Clip
属性:子弹个数,型号(_model)
枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击(shoot)
士兵类
名称:Soldier
属性:姓名(_name) 生命(_life) 等级(_level)
行为:开枪(fireByGun:)
*/
#import <Foundation/Foundation.h>
/*
弹夹类
类名:Clip
属性:子弹个数,型号(_model)
*/
//弹夹类的声明
#pragma mark 弹夹类的声明
@interface Clip : NSObject
{
@public
int _bulletCount; //子弹个数
NSString *_model; //子弹型号
}
@end
#pragma mark 弹夹类的实现
//弹夹类的实现
@implementation Clip
@end
/*
枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击(shoot)
*/
#pragma mark 枪类的声明
//枪类的声明
@interface Gun : NSObject
{
@public
NSString *_size;//枪的型号
}
//射击方法的声明
- (void)shoot:(Clip *)clip;
@end
#pragma mark 枪类射击方法的实现
//射击方法的实现
@implementation Gun
- (void)shoot:(Clip *)clip
{ //如果子弹个数>0打印
if(clip -> _bulletCount>0){
clip -> _bulletCount--;
NSLog(@"东关大队刘秘书用%@ 正在突突突的射击,剩余子弹:%d",_size,clip -> _bulletCount);
}else{
NSLog(@"子弹都没了,你还突突个毛啊,赶紧跑,子弹剩余个数%d",clip -> _bulletCount);
}
}
@end
/*
士兵类
名称:Soldier
属性:姓名(_name) 生命(_life) 等级(_level)
行为:开枪(fireByGun:)
*/
#pragma mark 士兵类的声明
//士兵类的声明
@interface Soldier : NSObject
{
@public
NSString *_name;//姓名
int _life; //生命
int _level; //等级
}
- (void)fireByGun:(Gun *)gun andClip:(Clip *)clip;
@end
#pragma mark 士兵类开枪方法的实现
@implementation Soldier
//士兵开枪方法的实现
- (void)fireByGun:(Gun *)gun andClip:(Clip *)clip
{
[gun shoot:clip];
}
@end
#pragma mark main函数
int main(int argc, const char * argv[]) {
//创建一个弹夹类的对象
Clip *c = [Clip new];
//给弹夹类的实例变量赋值
c -> _bulletCount = 5;
c -> _model = @"5mm口径";
//创建一个枪类的对象
Gun *g = [Gun new];
g -> _size = @"AK47";
//创建一个士兵类的对象
Soldier *s = [Soldier new];
s -> _name = @"嘎子";
s -> _life = 100;
s -> _level = 3;
//调用开枪的方法
[s fireByGun:g andClip:c];
[s fireByGun:g andClip:c];
[s fireByGun:g andClip:c];
[s fireByGun:g andClip:c];
[s fireByGun:g andClip:c];
[s fireByGun:g andClip:c];
return 0;
}