面向对象 - 对象作为方法的参数传递

当对象作为方法传递的时候传递的是对象的指针

#import <Foundation/Foundation.h>
#pragma mark - 定义一个图书类
@interface Book : NSObject
{
    NSString *_name;    // 书名
    int _pageNum;        // 书的页数
}

- (void)setName:(NSString *)name;
- (void)setPageNum:(int)pageNum;

- (NSString *)name;
- (int)pageNum;
@end


#pragma mark - 定义一个人类
@interface Person : NSObject
{
    NSString *_name;    // 姓名
    int _age;           // 年龄
    double _height;     // 身高
};


// setter
- (void)setName:(NSString *)name;
- (void)setAge:(int)age;
- (void)setHeight:(double)height;

// getter
- (NSString *)name;
- (int)age;
- (double)height;

// 输出个人信息
- (void)printInfo;

// 读书
- (void)readBook:(Book *)bk;
@end




#pragma mark - 程序入口
int main(int argc, const char * argv[]) {
    
    // 实例化一个人对象
    Person *person = [Person new];
    [person setName:@"张三"];
    [person setAge:18];
    [person setHeight:1.8];
    
    // 实例化书类
    Book *book = [Book new];
    [book setName:@"oc入门到精通"];
    [book setPageNum:200];
     
     // 调用人person对象的readBook方法,将Book的对象 book 进行传递
     [person readBook:book];    // 张三 正在读oc入门到精通书,一共200页
    
    return 0;
}

#pragma mark - 实现一个人类
@implementation Person

- (void)printInfo {
    NSLog(@"姓名: %@ 年龄: %i 身高: %lf", _name, _age, _height);
}

// setter
- (void)setName:(NSString *)name {
    _name = name;
}
- (void)setAge:(int)age {
    _age = age;
}
- (void)setHeight:(double)height {
    _height = height;
}

// getter
- (NSString *)name {
    return _name;
}
- (int)age {
    return _age;
}
- (double)height {
    return _height;
}

- (void)readBook:(Book)bk {
    NSLog(@"%@ 正在读%@书,一共%i页", _name, [bk name], [bk pageNum]);
}

@end

#pragma mark - 实现书类
@implementation Book

- (void)setName:(NSString *)name {
    _name = name;
}
- (void)setPageNum:(int)pageNum {
    _pageNum = pageNum;
}

- (NSString *)name {
    return _name;
}
- (int)pageNum {
    return _pageNum;
}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值