A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vyqrvwgf 中级黑马   /  2015-11-3 21:02  /  534 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.对象(object)
        是系统中的基本运行实体,对象就是类类型的变量,定义一个类,就可以创建多个这个类的对象,一个类就是具有相同类型的对象的抽象。

2.对象的存储细节
        假设有一个Person的类
        当[Person new];
        1)申请内存空间
        2)初始化实例变量
        3)返回内存空间的地
3.对象和方法之间的关系
        1)对象作为方法的参数
       
  1. #import <Foundation/Foundation.h>
  2. @interface Person:NSObject
  3. {

  4.     //公开属性,不安全
  5.     @public

  6.     //属性名前加上下划线

  7.     NSString *_name;
  8.     int _age;
  9. }
  10. -(void)displayPerson:(Person *)person;
  11. @end

  12. @implementation Person

  13. //将Person类的对象作为Person类对象方法的形参
  14. -(void)displayPerson:(Person *)person{
  15.     NSLog(@"姓名%@,年龄%d",person->_name,person->_age);
  16. }
  17. @end

  18. int main(int argc, const char * argv[]) {
  19.     @autoreleasepool {
  20.         Person *person1=[Person new];
  21.         Person *person=[Person new];
  22.         person1->_name=@"lazy";
  23.         person1->_age=25;
  24.         [person displayPerson:person1];
  25.         
  26.     }
  27.     return 0;
  28. }
复制代码



        2)对象作为方法的返回值
  1. #import <Foundation/Foundation.h>
  2. @interface Person:NSObject
  3. {
  4.     @public
  5.     NSString *_name;
  6.     int _age;
  7. }
  8. -(Person *)chageAge:(Person *)person;
  9. @end

  10. @implementation Person

  11. //返回Person类对象
  12. -(Person *)chageAge:(Person *)person{
  13.     person->_age=20;
  14.     return person;
  15. }
  16. @end

  17. int main(int argc, const char * argv[]) {
  18.     @autoreleasepool {
  19.         Person *person1=[Person new];
  20.         Person *person=[Person new];
  21.         person1->_name=@"lazy";
  22.         person1->_age=25;
  23.         [person chageAge:person1];
  24.         NSLog(@"姓名:%@,年龄:%d",person1->_name,person1->_age);
  25.         
  26.     }
  27.     return 0;
  28. }
复制代码

        3)对象作为参数连续传递
  1. #import <Foundation/Foundation.h>
  2. @interface Bullet:NSObject
  3. {
  4.     @public
  5.     int _bulletCount;
  6. }
  7. @end
  8. @implementation Bullet

  9. @end

  10. @interface Gun : NSObject
  11. -(void)shoot:(Bullet*)bullet;
  12. @end

  13. @implementation Gun

  14. -(void)shoot:(Bullet *)bullet{
  15.     NSLog(@"正在发射子弹");
  16.     bullet->_bulletCount--;
  17. }
  18. @end

  19. @interface Person : NSObject
  20. -(void)fire:(Gun*)gun and:(Bullet*)bullet;
  21. @end

  22. @implementation Person

  23. -(void)fire:(Gun *)gun and:(Bullet*)bullet{
  24.     NSLog(@"人在开枪");
  25.     [gun shoot:bullet];
  26. }
  27. @end

  28. int main(){
  29.     Person *lazy=[Person new];
  30.     Gun *ak=[Gun new];
  31.     Bullet *b=[Bullet new];
  32.     [lazy fire:ak and:b];
  33.     return 0;
  34. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马