在object c中可以自定义构造方法,和java一样,只是实现稍微不同而已
首先要在h头文件中声明这个自定义的构造方法
//
// Person.h
// InstanceDemo
//
// Created by 千 on 16/9/10.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
CGFloat _age;
NSString *_name;
CGFloat _height;
}
- (instancetype)initWithName:(NSString *)name;
- (instancetype)initWithAge:(CGFloat)age;
- (instancetype)initWithAll:(NSString *)name age:(CGFloat)age height:(CGFloat)height;
@end
然后再在m文件中去实现
//
// Person.m
// InstanceDemo
//
// Created by 千 on 16/9/10.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import "Person.h"
@implementation Person
- (instancetype)initWithName:(NSString *)name{
//调用方法的时候需要指定的相应的参数
//构造方法,直接返回
return [self initWithAll:@"初始化" age:2 height:170];
}
- (instancetype)initWithAge:(CGFloat)age{
return [self initWithAll:@"初始化" age:age height:170];
return self;
};
- (instancetype)initWithAll:(NSString *)name age:(CGFloat)age height:(CGFloat)height{
//调用父类的初始化
self = [super init];
if(self){
_name = name;
_age = age;
_height = height;
}
return self;
}
- (NSString *)description
{
//[NSString stringWithFormat:<#(nonnull NSString *), ...#>]
return [NSString stringWithFormat:@"description 输出名字:%@ 年龄%f 身高%f", _name,_age,_height];
}
@end
//
// main.m
// InstanceDemo
//
// Created by 千 on 16/9/10.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
//注意了,new的方法,其实是alloc,init的组合
//如果是要调用自定义的构造方法,那么就[[Person alloc] initWithAge:1.5]
Person *xiaoming =[[Person alloc] initWithAge:1.5];
NSLog(@"%@",xiaoming);
}
return 0;
}