OC-重写构造方法

from : http://www.cnblogs.com/wendingding/p/3706883.html

重写构造方法的目的是:让对象方法一创建出来,成员变量就会有一些固定的值。

示例

//
//  Person.h
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;

@end
Person.h
//
//  Person.m
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import "Person.h"

@implementation Person


//重写构造方法
- (instancetype)init
{
    //初始化对象,以拥有父类成员变量
    self = [super init];
    if (self) {
        //初始化对象自有成员变量
        _age = 10;
    }
    //返回一个已经初始化完成的对象
    return self;
}

@end
Person.m
//
//  Student.h
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import "Person.h"

@interface Student : Person

@property int number;

@end
Student.h
//
//  Student.m
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import "Student.h"

@implementation Student

//重写构造方法
- (instancetype)init
{
    //初始化对象,以拥有父类(person)的成员变量,包括age
    self = [super init];
    if (self) {
        _number = 10010;
    }
    return self;
}

@end
Student.m

测试主程序

//
//  main.m
//  WDDGouzaofangfaTest
//
//  Created by LiuChanghong on 15/9/25.
//  Copyright © 2015年 LiuChanghong. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Student *student = [Student new];//等同于[[Student alloc]init]
        NSLog(@"学生的年龄为%d岁,学号为%d",student.age,student.number);
        
    }
    return 0;
}
测试主程序

输出结果

posted @ 2015-09-25 13:04  Geeok  阅读(257)  评论(0编辑  收藏  举报