黑马程序员——构造方法之init的重写和自定义构造方法

来源:互联网 发布:vb清空文本框内容 编辑:程序博客网 时间:2024/05/16 23:46

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1、构造方法的概念:

    是一个用来初始化对象默认值对象方法


2、init方法的重写规则:

- (id)init{    if ( self = [super init] )    {         _someThing = 10;  //   如果初始化父类成功则给本对象的成员变量赋值    }        // 返回已经初始化完毕的本对象    return self;}

3、自定义构造方法:

Person.h

#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString *name;@property int age;/* 自定义构造方法的规范 1.一定是对象方法,一定以 "-" 开头 2.返回值一般是id类型 3.方法名一般以initWith开头*/- (id)initWithName:(NSString *)name;- (id)initWithAge:(int)age;- (id)initWithName:(NSString *)name andAge:(int)age;@end

Person.m

#import "Person.h"@implementation Person- (id)initWithName:(NSString *)name{    if ( self = [super init] )    {        _name = name;    }        return self;}- (id)initWithAge:(int)age{    if ( self = [super init] )    {        _age = age;    }    return self;}- (id)initWithName:(NSString *)name andAge:(int)age{    if ( self = [super init] )    {        _name = name;        _age = age;    }    return self;}@end

Student.h

#import "Person.h"@interface Student : Person@property int no;- (id)initWithNo:(int)no;- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no;@end

Student.m

#import "Student.h"@implementation Student- (id)initWithNo:(int)no{    if ( self = [super init] )    {        _no = no;    }    return self;}// 父类的属性交给父类方法去处理,子类方法处理子类自己的属性- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no{    // 将name、age传递到父类方法中进行初始化    if ( self = [super initWithName:name andAge:age])    {        _no = no;    }        return self;}@end

main.m

#import <Foundation/Foundation.h>#import "Person.h"#import "Student.h"int main(){    Student *p = [[Student alloc] initWithName:@"Jim" andAge:29 andNo:10];        return 0;}

0 0
原创粉丝点击