#pragma mark - 弹夹
@interface Clip : NSObject
{
@public
int _bullet; // 子弹
}
- (void)addBullet;
@end
@implementation Clip
- (void)addBullet
{
_bullet = 10;
}
@end
#pragma mark - 枪
@interface Gun : NSObject
{
Clip *_clip;
}
- (void)shoot:(Clip *)clip;
@end
@implementation Gun
- (void)shoot:(Clip *)clip
{
// 判断有没有弹夹
if (clip != nil) {
//确认了有弹夹的情况下 在判断有没有子弹
if (clip->_bullet > 0) {
clip->_bullet--;
NSLog(@"打了一枪, 剩余%d个子弹", clip->_bullet);
}else
{
NSLog(@"没有子弹了");
}
}else
{
NSLog(@"没有弹夹");
}
}
@end
#pragma mark - 士兵
@interface Solier : NSObject
{
@public
NSString *_name;
double _height;
double _weight;
}
// 开发
- (void)fire:(Gun *)gun clip:(Clip *)clip;
@end
@implementation Solier
- (void)fire:(Gun *)gun clip:(Clip *)clip
{
if (gun != nil && clip != nil) {
[gun shoot:clip];
}
}
@end
int main(int argc, const char * argv[]) {
// 创建士兵
Solier *so = [Solier new];
so->_name = @"三炮";
so->_height = 1.88;
so->_weight = 120.3;
// 创建枪
Gun *g = [Gun new];
// 创建弹夹
Clip *clip = [Clip new];
[clip addBullet];
// 士兵调用开枪的方法
[so fire:g clip:clip];
[so fire:g clip:clip];
[so fire:g clip:clip];
return 0;
}
对象作为方法的参数连续的传递
最新推荐文章于 2022-03-03 19:08:01 发布