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