/*
Objective-c - instancetype:
1> instancetype:
只能用作方法的返回值,代表返回值类型为当前类的对象.
2> instancetype和id类型的区别:
instancetype只能用作方法的返回值,别的地方不能用,代表返回值类型为当前类的对象.
id是一个万能指针,不仅可以作为方法的返回值,也能id类型的指针变量.
如下代码:
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 人类
//声明
@interface YYPerson : NSObject
@property NSString *name;
@property int age;
+ (instancetype)person;
- (void)sayHi;
@end
//实现
@implementation YYPerson
+ (instancetype)person
{
return [self new];
}
- (void)sayHi
{
NSLog(@"大家好!我叫%@,今年%d岁了!", _name, _age);
}
@end
#pragma mark -
#pragma mark 学生类
//声明
@interface YYStudent : YYPerson
@property NSString *stuNum;
@end
//实现
@implementation YYStudent
- (void)sayHi
{
NSLog(@"大家好!我叫%@,今年%d岁了!我的学号是%@.", self.name, self.age, _stuNum);
}
@end
#pragma mark -
#pragma mark main函数
int main(int argc, const char * argv[]) {
//调用类方法返回一个人类对象
YYPerson *xiaoming = [YYPerson person];
//赋值属性
xiaoming.name = @"小明";
xiaoming.age = 18;
//调用方法
[xiaoming sayHi];
//调用类方法返回一个学生对象
YYStudent *xiaoxue = [YYStudent person];
//赋值属性
xiaoxue.name = @"小雪";
xiaoxue.age = 16;
xiaoxue.stuNum = @"001号";
//调用方法
[xiaoxue sayHi];
return 0;
}