黑马程序员技术交流社区

标题: 构造方法OC [打印本页]

作者: AGHM0312    时间: 2015-12-6 21:54
标题: 构造方法OC
//
//  Person.m
//  33构造方法
//
//  Created by 翁发达 on 38/1/2.
//  Copyright © 2038年 翁发达. All rights reserved.
//其中Person类继承了NSObject类
#import "Person.h"
@implementation Person
//在保留父类原有方法中的所有操作的前题下,加上自已独有的操作.--->重写父类的init方法
-(id)init{
    /*
    self= [super init];
    //如果super init 没有执行成功或正确执行,则无法返回一个正确的对象,那么此时会返回0(nil);
    //nil==0;
    if(self!=nil){
        _age=1;
        _name=@"八戒";
    }
     */
    //0为假,非0数都为真.假如super init失败了,则返回0,self=0;为假,不执行.
    //如果super init执行成功了,会返回一个指针,那个值赋值给self=0x123abc(假设值);则,self是一个非0数,为真执行自定义属性赋值操作
    //注意:下面是赋值.判断原理是:非0数为真,0为假.
    if(self= [super init]){
        _age=1;
        _name=@"八戒";
    }
   
    return self;
}
@end

下面是手动定义一个自己的构造方法:

//
//  Cat.m
//  33构造方法
//
//  Created by 翁发达 on 38/1/2.
//  Copyright © 2038年 翁发达. All rights reserved.
//
#import "Cat.h"
@implementation Cat
//手动定义一个自已的构造方法.
-(id)initCatName:(NSString*)name Age:(int)age{
//首先调用父类的初始化方法,把父类中初始化的操作执行完,并返回给self.
if(self= [super init]){
//做自已独有的操作
        _name=name;
        _age=age;
}
return self;
}
@end
下面是Cat类的子类BSCat类   自定义构造方法:

#import "BSCat.h"
@implementation BSCat
//自定义构造方法
-(id)initBSCatName:(NSString *)name Age:(int)age Color:(NSString *)color{
   
//首先调用父类的初始化方法,把父类中初始化的操作执行完,并返回给self.
//注意要调用父类的自定义的构造方法,这样把父类的变化隔离了.
if(self= [super initCatName:name Age:age]){
//父类的操作不需要再写
//        _name=name;
//        _age=age;
//只需要写自已独有的操作就行.
        _color=color;
}
   
return self;
}   

作者: 唯有繁星    时间: 2015-12-6 22:45
                             挺好的
作者: chensc    时间: 2015-12-7 21:56
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2