- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
自定义构造方法
学习前:你必须会什么?
什么是构造方法
在OC中init开头的方法,我们称之为构造方法
构造方法的用途:用于初始化一个对象,让某个对象 已创建出来就拥有某些属性和值
一、本章笔记
自定义构造方法:
其实就是自定义一个init方法
1.一定是对象方法
2.一定返回id/instancetype
3.方法名称 一定以init开头
// 一个类 可以有0个或者多个自定义构造方法
// 自定义构造方法 可以有1个 或多个参数
二、code
main.m
#pragma mark 11-自定义构造方法
#pragma mark 概念
/*
自定义构造方法:
其实就是自定义一个init方法
1.一定是对象方法
2.一定返回id/instancetype
3.方法名称 一定以init开头
// 一个类 可以有0个或者多个自定义构造方法
// 自定义构造方法 可以有1个 或多个参数
*/
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
// Person *p = [Person new];
// Person *p = [[Person alloc]init];
// p.age = 20;
// Person *p = [[Person alloc]initWithAge:33];
// Person *p = [[Person alloc]initWithName:@"lys"];
Person *p = [[Person alloc]initWithAge:33 andName:@"lyt"];
NSLog(@"%@",p);
// Person *p2 = [[Person alloc]init];
// Person *p2 = [[Person alloc]initWithAge:55];
Person *p2 = [[Person alloc]initWithName:@"lyh"];
NSLog(@"%@",p2);
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@property NSString *name;
/*
自定义构造方法:
其实就是自定义一个init方法
1.一定是对象方法
2.一定返回id/instancetype
3.方法名称 一定以init开头
*/
// 一个类 可以有0个或者多个自定义构造方法
- (instancetype)initWithAge:(int)age;
- (instancetype)initWithName:(NSString *)name;
// 自定义构造方法 可以有1个 或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;
@end
>>>.m
#import "Person.h"
@implementation Person
- (instancetype)init
{
if (self = [super init]) {
_age = 10;
}
return self;
}
- (instancetype)initWithAge:(int)age
{
if (self = [super init]) {
_age = age;
}
return self;
}
- (instancetype)initWithName:(NSString *)name
{
if (self = [super init]) {
_name = name;
}
return self;
}
- (instancetype)initWithAge:(int)age andName:(NSString *)name
{
if (self = [super init]) {
_age = age;
_name = name;
}
return self;
}
- (NSString *)description
{
return [NSString stringWithFormat:@" age = %i , name = %@",_age,_name];
}
@end