Dog.h #import <Foundation/Foundation.h> @interface Dog : NSObject { @public NSString *_name; int _color; int _speed; int _sex; float _weight; } - (void)eat; - (void)bark; - (void)run; - (BOOL)cmpColor:(Dog *)otherDog; - (int)cmpSpeed:(Dog *)otherDog; @end
Dog.m #import "Dog.h" @implementation Dog - (void)eat{ _weight +=0.5; NSLog(@" %@ 在吃 shi 吃完之后 体重为 %.2f",_name,_weight); } - (void)bark{ NSLog(@" 汪 name = %@ ,颜色= %d ,速度 =%d , 体重 %.2f 性别 %d" ,_name,_color,_speed,_weight,_sex); } - (void)run{ _weight -=0.5; NSLog(@" ssss ss %@ ",_name); NSLog(@"speed = %d , 体重= %.2f",_speed,_weight); } - (BOOL)cmpColor:(Dog *)otherDog{ if (_color == otherDog->_color) { return YES ; }else{ return NO; } } - (int)cmpSpeed:(Dog *)otherDog{ return _speed - otherDog->_speed; } @end
Person.h #import <Foundation/Foundation.h> #import "Dog.h" @interface Person : NSObject { @public NSString *_name;//名字属性 Dog * _dog;// 狗属性 } - (void)feedDogWith:(NSString *)foodName; - (void)walkDog; @end
Person.m #import "Person.h" @implementation Person - (void)feedDogWith:(NSString *)foodName{ NSLog(@" %@ 在喂狗吃 %@ ",_name,foodName); [_dog eat]; } //遛狗:每溜一次,狗就会执行“跑”这个行为 - (void)walkDog{ NSLog(@" %@ 在遛狗 ",_name); NSLog(@" _dog ===%p ",_dog); [_dog run]; } @end
main.m #import <Foundation/Foundation.h> //#import "Dog.h" #import "Person.h" /* 多文件步骤 1. 把声明 放在 .h文件里面 把实现放在.m文件里面 文件名是类名 2. 目的 提高程序的可读性. */ int main(int argc, const char * argv[]) { @autoreleasepool { Person *zhangsan = [Person new]; zhangsan->_name = @"张三"; Dog *wangcai = [Dog new]; wangcai->_name = @"旺财"; wangcai->_sex = 1; wangcai->_speed = 90; wangcai->_weight = 500; wangcai->_color = 5 ; NSLog(@"wangcaiiiiiii ---> %p",wangcai); [wangcai bark]; zhangsan->_dog =wangcai; [zhangsan walkDog]; } return 0; } 栈区是变量名是对象地址,堆区是对象内存,调用方法的时候是根据方法的地址找的方法。
/** 对象和对象之间的关系 1.组合关系 1台计算机对象由:硬盘对象,内存对象,CPU对象,主板对象,显示器对象等等. 汽车和轮胎 -- 组合关系 体现:整体---局部 2.依赖关系 女孩用手机打电话,是女孩依赖手机. 1个对象作为另外1个对象的方法的参数. 3.关联关系 1个对象作为另外1个对象的成员变量,他们之间不是组合关系.也就是不是整体和部分的关系. 总结:组合关系和关联关系,用法是一样:1个对象作为另外1个对象的成员变量. 组合:整体---局部 关联:不存在必然的关系. 依赖:1个对象作为另外1个对象的方法参数. */
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5308246.html,如需转载请自行联系原作者