OC 复合问题 男人和女人问题
2015-10-27 21:08
357 查看
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
#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
相关文章推荐
- Unity3D 第八章 实例化
- 异步任务
- C#字符串的不变性
- 什么是动态sql
- VIM命令大全
- opencv 将两张图片显示到一幅图片中
- 日经春秋 20151027
- IOS tabBarController 嵌套navigationController 实现多个界面的跳转
- C语言制作一个简易的计算器(加、减、乘、除、取模)
- java Vamei快速教程09 类数据和类方法
- iOS开发-Xcode升级后插件失效解决办法
- 网站架构的演变之路(58同城)
- 转做大系统硬件
- 天声人語 20151027 国連70年の行動計画
- Unity3D 第二章 常用操作
- A*算法(附c源码)
- JavaScript自定义事件,动态添加属性
- iOS NSRunLoop跟NSTimer的问题
- jsp中如何上传图片到服务器
- 超级有趣HTML