A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AGHM0312 中级黑马   /  2015-12-6 21:54  /  804 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  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;
}   

2 个回复

倒序浏览
                             挺好的
回复 使用道具 举报
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马