main.m
#import <Foundation/Foundation.h>
#import "Man.h"
#import "Women.h"
#import "Baby.h"
int main(int argc,const char * argv[]) {
//创建一个宝宝给那个女的
Baby *child = [[Babyalloc]init];
//创建一个媳妇给那个男的
Women *wife = [[Womenalloc]initWithName:@"女"beautiful:@"100"child:child];
//创建一个男的
Man *man = [[Manalloc]initWithName:@"王龙"job:@"程序员"money:@"500"wife:wife];
[wife setHusband:man];//给媳妇加一个男的
NSLog(@"%@",man);//打印一个变量
return0;
}
Women.h
#import <Foundation/Foundation.h>
#import "Baby.h"
@class Man;
//@class 关键字告诉编译器 Man是一个类可以当做一个类去使用 避免循环导入头文件
@interface Women : NSObject
{
NSString *_name; // 姓名
NSString *_beautiful;// 颜值
Man *_husband; // 丈夫
Baby *_child; // 宝宝
}
// 自定义初始化变量
- (instancetype)initWithName:(NSString *)name beautiful:(NSString *)beautiful child:(Baby *)child;
// getter和setter方法
- (void)setHusband:(Man *)husband;
- (Man *)husband;
// 重写描述方法 自我介绍
- (NSString *)description;
//输出妻子的丈夫的名字
- (void)husbandName;
- (NSString *)sayHi;
@end
Women.m
#import "Women.h"
#import "Man.h"
//我需要声明的时候 可以使用@class 来告诉编译器 我是一个类
//如果你是要这个类的方法的时候还需要使用头文件 才能使用方法
@implementation Women
//自定义初始化方法
- (instancetype)initWithName:(NSString *)name beautiful:(NSString *)beautiful child:(Baby *)child
{
_name = name;
_beautiful = beautiful;
_child = child;
returnself;
}
//getter setter方法
- (void)setHusband:(Man *)husband
{
_husband = husband;
}
- (Man *)husband
{
return_husband;
}
//重写description方法 自我介绍
- (NSString *)description
{
NSString *str = [NSString stringWithFormat: @"姓名是:%@ 颜值:%@ 丈夫:%@孩子:%@",_name,_beautiful,_husband,_child];
return str;
}
//输出妻子的丈夫的名字
- (void)husbandName
{
NSLog(@"我丈夫名字:%@",[_husband name]);
}
- (NSString *)sayHi
{
return@"输出女人的信息";
}
@end
Baby.h
#import <Foundation/Foundation.h>
@interface Baby : NSObject
{
NSString *_name;//姓名
NSString *_gander;//性别
}
@end
Baby.m#import "Baby.h"
@implementation Baby
@end
Man.h
#import <Foundation/Foundation.h>
// 引入头文件
#import "Women.h"
@interface Man : NSObject
{
NSString *_name; // 姓名
NSString *_job; // 职业
NSString *_money;// 钱
// 复合:在本类中 声明了一个其他类的对象 作为本类的实例对象
Women *_wife; // 媳妇
}
//自定义初始化对象
- (instancetype)initWithName:(NSString *)name
job:(NSString *)job
money:(NSString *)money
wife:(Women *)wife;
//setter getter方法
- (void)setWife:(Women *)wife;
- (Women *)wife;
//重写description方法 自我介绍
- (NSString *)description;
//getter 方法
- (NSString *)name;
@end
Man.m
#import "Man.h"
@implementation Man
//自定义初始化对象
- (instancetype)initWithName:(NSString *)name
job:(NSString *)job
money:(NSString *)money
wife:(Women *)wife
{
_name = name;
_job = job;
_money = money;
_wife = wife;
returnself;
}
//setter方法
- (void)setWife:(Women *)wife
{
_wife = wife;
}
//getter方法
- (Women *)wife
{
return_wife;
}
- (NSString *)name
{
return_name;
}
//自我介绍
- (NSString *)description
{
NSString *str = [NSStringstringWithFormat:@"姓名:%@工作:%@ 钱:%@媳妇:%@",_name,_job,_money,[_wifesayHi]];
return str;
}
@end