/*
总结:
A类可以作为B类的属性,代表B拥有A.
属性仅仅是一个变量,一个指针变量而已,默认值时nil,并为创建对象.
此时,若要正常使用的话,还需要为B对象的A属性赋值一个对象.
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 狗类的声明和实现
//声明
@interface YYDog : NSObject
{
@public
NSString *_name;
NSString *_color;
}
- (void)shout;
@end
//实现
@implementation YYDog
- (void)shout
{
NSLog(@"哈喽! 大家好,我是%@的%@! ", _color, _name);
}
@end
#pragma mark -
#pragma mark 人类的声明和实现
//声明
@interface YYPerson : NSObject
{
@public
NSString *_name;
int _age;
YYDog *_dog;
}
@end
//实现
@implementation YYPerson
@end
int main(int argc, const char * argv[]) {
//创建人类对象
YYPerson *person = [YYPerson new];
//创建狗对象
YYDog *dog = [YYDog new];
dog->_name = @"旺财";
dog->_color = @"黄色";
//将狗对象赋值给人对象的狗属性
person->_dog = dog;
//调用对象方法
[person->_dog shout];
dog->_name = @"阿黄";
[person->_dog shout];
return 0;
}