小小君的OC--类之间的复合调用

新建Man、Woman 和Baby类:

Baby.h文件:

#import <Foundation/Foundation.h>


@interface Baby : NSObject


{

    NSString *_name;

    NSString *_gender;

}


- (instancetype)initWithName:(NSString *)name

                      Gender:(NSString *)gender;



- (NSString *)description;


@end


Baby.m文件:

#import "Baby.h"


@implementation Baby


- (instancetype)initWithName:(NSString *)name

                      Gender:(NSString *)gender

{

    _name = name;

    _gender = gender;

    return self;

}



- (NSString *)description

{

    NSString *str = [NSString stringWithFormat:@"宝宝姓名:%@  宝宝性别:%@", _name,_gender];

    return str;

}


@end


Woman.h文件:

#import <Foundation/Foundation.h>

#import "Baby.h"


@class Man;

// class 关键字 告诉编译器 Man是一个类 可以当作一个类去使用 避免循环导入头文件


@interface Woman : NSObject


{

    NSString *_name;      // 姓名

    NSString *_faceValue;   // 颜值

    Man *_husband;         // 丈夫

    Baby *_baby;       // 宝宝

}

// 自定义初始化方法

- (instancetype)initWithName:(NSString *)name

                   FaceValue:(NSString *)faceValue

                        Baby:(Baby *)baby;


// get set 方法

- (void)setHusband:(Man *)husband;


- (Man *)husband;


// 重写描述方法

- (NSString *)description;


// 输出妻子的丈夫的名字

- (void)husbandName;



@end


Woman.m文件:

#import "Woman.h"

#import "Man.h"

// 我需要声明的时候 可以使用@class 来告诉编译器 我是一个类

// 如果你需要使用这个类的方法的时候 还需要引入头文件 才能使用方法


@implementation Woman



- (instancetype)initWithName:(NSString *)name

                   FaceValue:(NSString *)faceValue

                        Baby:(Baby *)baby

{

    _name = name;

    _faceValue = faceValue;

    _baby = baby;

    return self;

}



- (void)setHusband:(Man *)husband

{

    _husband = husband;

}


- (Man *)husband

{

    return _husband;

}


// 重写描述方法

- (NSString *)description

{

    NSString *str = [NSString stringWithFormat:@"姓名:%@  颜值:%@ %@", _name, _faceValue, _baby];

    return str;

}


// 输出妻子的丈夫的名字


- (void)husbandName

{

    NSLog(@"丈夫的名字:%@",[_husband name]);

}



@end


Man.h文件:

#import <Foundation/Foundation.h>

#import "Woman.h"



@interface Man : NSObject


{

    NSString *_name;    // 名字

    NSString *_job;    //职业

    NSString *_money;   //

    // 复合:在本类中声明一个其他类的对象 作为本类的实例对象

    Woman *_wife;      //媳妇

}


// 自定义初始化方法

- (instancetype)initWithName:(NSString *)name

                         Job:(NSString *)job

                       Money:(NSString *)money

                        Wife:(Woman *)wife;



- (void)setWife:(Woman *)wife;



- (Woman *)wife;



- (NSString *)description;


// get name 的方法

- (NSString *)name;



@end


Man.m文件:

#import <Foundation/Foundation.h>

#import "Woman.h"



@interface Man : NSObject


{

    NSString *_name;    // 名字

    NSString *_job;    //职业

    NSString *_money;   //

    // 复合:在本类中声明一个其他类的对象 作为本类的实例对象

    Woman *_wife;      //媳妇

}


// 自定义初始化方法

- (instancetype)initWithName:(NSString *)name

                         Job:(NSString *)job

                       Money:(NSString *)money

                        Wife:(Woman *)wife;



- (void)setWife:(Woman *)wife;



- (Woman *)wife;



- (NSString *)description;


// get name 的方法

- (NSString *)name;

@end


Man.m文件:

#import "Man.h"


@implementation Man


- (instancetype)initWithName:(NSString *)name

                         Job:(NSString *)job

                       Money:(NSString *)money

                        Wife:(Woman *)wife

{

    _name = name;

    _job = job;

    _money = money;

    _wife = wife;

    return self;

}



- (void)setWife:(Woman *)wife

{

    _wife = wife;

}



- (Woman *)wife

{

    return _wife;

}




- (NSString *)description

{

    NSString *str = [NSString stringWithFormat:@"姓名:%@  职业:%@  身价:%@  媳妇:%@", _name, _job, _money, _wife];

    return str;

}



- (NSString *)name

{

    return _name;

}


@end



main.m文件:

#import <Foundation/Foundation.h>

#import "Man.h"

#import "Woman.h"

#import "Baby.h"



int main(int argc, const char * argv[]) {

   

        

    // 创建一个宝宝

    Baby *baby1 = [[Baby alloc]initWithName:@"zd" Gender:@""];

        

    // 创建一个女的

    Woman *woman1 = [[Woman alloc]initWithName:@"dj" FaceValue:@"90" Baby:baby1];

        

    // 创建一个男的

    Man *man1 = [[Man alloc]initWithName:@"A" Job:@"ios开发" Money:@"120000" Wife:woman1];

    

    [woman1 setHusband:man1];

    

    [woman1 husbandName];

    

    NSLog(@"%@",man1);

    

    

    NSLog(@"%@",woman1);

    

    return 0;

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值