//  main.m
// 对象作为方法的参数传递 #import <Foundation/Foundation.h>
/*
士兵
事物名称: 士兵(Soldier)
属性:姓名(name), 身高(height), 体重(weight)
行为:打枪(fire), 打电话(callPhone) 枪
事物名称:枪(Gun)
属性:弹夹(clip) , 型号(model)
行为:上弹夹(addClip) 弹夹
事物名称: 弹夹(Clip)
属性:子弹(Bullet)
行为:上子弹(addBullet)
*/ @interface Gun : NSObject
{
@public
int _bullet; // 子弹
}
// 射击
- (void)shoot;
@end
@implementation Gun
- (void)shoot
{
// 判断是否有子弹
if (_bullet > ) { _bullet--;
NSLog(@"打了一枪 %i", _bullet);
}else
{
NSLog(@"没有子弹了, 请换弹夹");
}
}
@end
@interface Soldier : NSObject
{
@public
NSString *_name;
double _height;
double _weight;
}
//- (void)fire;
- (void)fire:(Gun *)gun;
@end
@implementation Soldier
/*
- (void)fire
{
NSLog(@"打了一枪");
}
*/
// Gun * g = gp
- (void)fire:(Gun *)g
{
// NSLog(@"打了一枪");
[g shoot];
}
@end
int main(int argc, const char * argv[]) {
// 1.创建士兵
Soldier *sp =[Soldier new];
sp->_name = @"屎太浓";
sp->_height = 1.88;
sp->_weight = 100.0;
// 2.创建一把枪
Gun *gp = [Gun new];
gp->_bullet = ;
// 2.让士兵开枪
// [sp fire];
// 让对象作为方法的参数传递
[sp fire:gp]; // 地址
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
[sp fire:gp];
return ;
}

最新文章

  1. Xamarin的不归路-生成安卓错误2
  2. 反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)
  3. 32-bit Assembly on x86_64 Linux (Use Nasm and ld&amp;gcc)
  4. 饿了么 openapi demo
  5. Ajax-(get/post/jQuery方式请求)
  6. CentOS 更新yum源
  7. General Purpose Hash Function Algorithms
  8. 【UVA1633】禁止的回文串(状压DP)
  9. bootstrap之Flick
  10. Android Studio,使用外部模拟器作为生成app调试的模拟器
  11. 收集一些dos网络配置命令,从新获取ip刷新dns
  12. CentOS7.x搭建时间同步服务器
  13. 微信小程序实战--集阅读与电影于一体的小程序项目(一)
  14. python 高阶函数之 map
  15. JavaScript面试技巧(一):基础知识
  16. Linux上 发布.Net Core
  17. 安装zabbix3.4 centos7
  18. Gson转换json数据为对象
  19. JavaScript 如何从引用类型(Array 、 Object)创建一个新的对象
  20. 解析ES6 Promise

热门文章

  1. java中强制类型转换时,高位数截取成低位数的方法
  2. 前端HTML5思维导图笔记
  3. Unity引擎GUI之Input Field
  4. UID卡、CUID卡、FUID卡的区别
  5. react基础篇五
  6. swift里 as、as!、as?区别 T.Type与动态类型
  7. 前端工具gulp
  8. eas源码示例1
  9. 【剑指Offer】42、和为S的两个数字
  10. 7.IDEA创建Web项目和Tomcat配置