iOS 类簇

iOS 类簇

Person.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Person : NSObject
@property (nonatomic,assign) NSUInteger age;

- (instancetype)personWithAge:(NSUInteger)age;
@end

NS_ASSUME_NONNULL_END

Person.m

#import "Person.h"
@interface __PersonGirl : Person

@end
@implementation __PersonGirl

@end

@interface __PersonWoman : Person

@end
@implementation __PersonWoman

@end


@implementation Person

- (instancetype)personWithAge:(NSUInteger)age
{
    if (age <= 18) {
        __PersonGirl *girl = [[__PersonGirl alloc] init];
        girl.age = age;
        return girl;
    }else {
        __PersonWoman *woman = [[__PersonWoman alloc] init];
        woman.age = age;
        return woman;
    }
}

@end

TestCode

#import "ClassClusterViewController.h"
#import "Person.h"
@interface ClassClusterViewController ()

@end

@implementation ClassClusterViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    Person *person1 = [[Person alloc] personWithAge:15];
    Person *person2 = [[Person alloc] personWithAge:30];
    NSLog(@"age:%lu,class:%@",(unsigned long)person1.age,[person1 class]);
    NSLog(@"age:%lu,class:%@",(unsigned long)person2.age,[person2 class]);
}

@end

打印结果
2021-07-14 14:19:16.392992+0800 TestUI[39422:1747234] age:15,class:__PersonGirl
2021-07-14 14:19:16.393149+0800 TestUI[39422:1747234] age:30,class:__PersonWoman

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容