首页 > 其他 > 详细

类的组合使用

时间:2016-01-10 09:18:35      阅读:149      评论:0      收藏:0      [点我收藏+]

 

4、类的组合使用:

类的组合使用,就是类里边的实例变量是自己定义的类。用法与普通类使用一样。

例子:

family.h

#import <Foundation/Foundation.h>

#import "Father.h"

#import "Mother.h"

#import "Son.h"

@interface Family : NSObject{

   

    //father

    Father *_father;

    //mother

    Mother *_mother;

    //son

    Son *_son;

}

 

- (instancetype)initWithFather:(Father *)father mother:(Mother *)mother son:(Son *)son;

 

- (void) setFather : (Father *)father;

- (void)setMother:(Mother *)mother;

- (void)setSon :(Son *)son;

 

 

- (Father *) father;

- (Mother *)mother;

- (Son *)son;

 

 

@end

family.m

 

#import "Family.h"

@implementation Family

- (instancetype)initWithFather:(Father *)father mother:(Mother *)mother son:(Son *)son{

    _father = father;

    _mother = mother;

    _son = son;   

    return self;

}

- (void) setFather : (Father *)father{

    _father = father;

}

- (void)setMother:(Mother *)mother{

    _mother = mother;

}

- (void)setSon :(Son *)son{

    _son = son;

}

- (Father *) father{

    return _father;

}

- (Mother *)mother{

    return _mother;

}

- (Son *)son{

    return _son;

}

@end

Son.h

#import <Foundation/Foundation.h>

 

@interface Son : NSObject{

        NSString *_name;

        NSInteger _age;

       }

    //初始化方法

    - (instancetype) initWithName:(NSString *)name age:(NSInteger)age;

    //getter

    - (NSString *)name;

    - (void)setName:(NSString *)name;

   

    - (NSInteger)age;

    - (void)setAge:(NSInteger)age;

@end

Son.m

 

#import "Son.h"

@implementation Son

- (instancetype) initWithName:(NSString *)name age:(NSInteger)age{

    _name = name;

    _age = age;

    return self;

}

- (NSString *)name{

    return  _name;

}

- (void)setName:(NSString *)name{

    _name = name;

}

 

- (NSInteger)age{

    return _age;

}

- (void)setAge:(NSInteger)age{

    _age = age;

}

 

 

@end

 

Father.h

#import <Foundation/Foundation.h>

@interface Father : NSObject{

    NSString *_name;

}

- (instancetype)initWithName:(NSString *)name;

- (NSString *)name;

- (void) setName :(NSString *)name;

@end

Father.m

#import "Father.h"

 

@implementation Father

 

- (instancetype)initWithName:(NSString *)name{

    _name = name;

    return self;

}

 

- (NSString *)name{

    return _name;

}

- (void) setName :(NSString *)name{

    _name = name;

}

 

@end

Mother.h

#import <Foundation/Foundation.h>

 

@interface Mother : NSObject{

    NSString *_name;

}

 

- (instancetype) initWithName :(NSString *)name;

 

 

- (NSString *)name;

- (void) setName:(NSString *)name;

@end

Mother.m

 

#import "Mother.h"

@implementation Mother

- (instancetype) initWithName :(NSString *)name{

    _name = name;

    return self;

}

- (NSString *)name{

    return _name;

}

- (void) setName:(NSString *)name{

    _name = name;

}

@end

main.m

 

#import <Foundation/Foundation.h>

#import "Son.h"

#import "Family.h"

#import "Father.h"

#import "Mother.h"

 

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        Son *s = [[Son alloc]initWithName:@"六娃" age:19];

        Father *f = [[Father alloc]initWithName:@"小金刚"];

        Mother *m = [[Mother alloc]initWithName:@"女王大人"];

       

        Family *family = [[Family alloc]initWithFather:f mother:m son:s];

//        //第一种方式

//        //getter方法

//        Son *s1 = [family son];

//        NSLog(@"%@",s1.name);

       

        //第二种方式

        NSLog(@"%@",[[family son]name]);//2015-04-14 16:50:01.489 OCLesson2_类的组合使用[2215:127250] 六娃

       

        NSLog(@"%ld",[[family son]age]);//2015-04-14 16:50:01.490 OCLesson2_类的组合使用[2215:127250] 19

       

        NSLog(@"%@",[[family father]name]);//2015-04-14 16:50:01.490 OCLesson2_类的组合使用[2215:127250] 小金刚

        NSLog(@"%@",[[family mother]name]);//2015-04-14 16:50:01.490 OCLesson2_类的组合使用[2215:127250] 女王大人

       

        //第三种方式

        //点语法 可以自动识别getter和setter方法

        //getter

        NSLog(@"%@",s.name);

        //setter

        s.name = @"七娃";

        //getter

        NSLog(@"%@",s.name);

        //getter

        NSLog(@"%@",family.son.name);

        //getter

        NSLog(@"%ld",family.son.age);

        //getter

        NSLog(@"%@",family.father.name);

        //getter

        NSLog(@"%@",family.mother.name);

       

    }

    return 0;

}

类的组合使用

原文:http://www.cnblogs.com/DevinSMR/p/5117786.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!