新建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;
}