继承,便利构造器,初始化方法

继承继承

继承的主要作用就是保证类的完整以及简化代码.

使用时把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法就行

特点:

注意:

继承的实现: NSObject

Zombie 是子类,NSObject是父类

继承中方法的执行

如果有三个类,即A继承于B,B继承于C,如果给C的对象发送一个消息:message,执行顺序为

super

super是编译器指令,不是对象

主要作用就是如果给super发消息,就可以执行父类中实现的方法

子类如果既有自己的实现,又有父类继承下来的实现,如果要使用父类的实现,就向super发送消息

初始化方法

创建对象分为两步,开辟空间以及初始化

初始化方法的主要作用是为某些实例变量赋初值

初始化方法在对象的整个生命周期里只使用一次

完整的初始化方法

先调用下父类的初始化方法,对父类继承过来的成员变量进行设置

if语句的意义是 : 当这个对象在初始化过程中出现问题,会返回一个空指针,如果是空指针接下来的赋值就没有意义,跳过去,如果返回的是一个正常的堆空间地址,才能继续赋值

-(id) initWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speed;{// 完整版初始化方法self = [super init];if (self) {_speed = speed;_blood = blood;_attack = attack;}return self;}

在自身的初始化方法中,优先向super发送init消息,初始化公共变量,初始化成功之后,再初始化自身特有变量,从而完成全部实例变量的初始化。

初始化方法特征便利构造器

实现部分: 声明

+ (*);

实现

+ (Person *)personWithName:(NSString *)Namesex:(NSString *)Sexage:(NSInteger)Age;{Person *person = [[Person alloc]initWithName:Name sex:Sex age:Age];return person;}

使用便利构造器创建对象

Person *per = [Person personWithName:@”张三” sex:@”男” age:20];代码练习

Zombie.h

{NSInteger _blood;NSInteger _attack;CGFloat _speed;}// 行为- (void) attack;- (void) walk;- (void) dead;// 自定义初始化方法的声明- (id) initWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speed;// 便利构造器+ (Zombie *)zombieWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speed;@end

Zombie.m

@implementation Zombie- (void) attack{NSLog(@”普通僵尸正在攻击”);}- (void) walk{NSLog(@”普通僵尸正在走”);}- (void) dead{NSLog(@”普通僵尸死了”);}-(id) initWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speed;{// 完整版初始化方法self = [super init];if (self) {_speed = speed;_blood = blood;_attack = attack;}return self;}+ (Zombie *)zombieWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speed;{Zombie *zombie = [[Zombie alloc] initWithBlood:blood attack:attack speed:speed];return zombie;}

BlockZombie.h

{// 子类只需要写自己的特征及行为NSString *_equipment;}-(void) loseEquipment;-(id) initWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speedequipment:(NSString *)equipment;@end

BlockZombie.m

@implementation BlockZombie- (void) attack{NSLog(@”路障僵尸正在攻击”);}- (void) walk{NSLog(@”路障僵尸正在走”);}- (void) dead{NSLog(@”路障僵尸死了”);}-(void) loseEquipment{NSLog(@”路障僵尸,失去装备”);}-(id) initWithBlood:(NSInteger)bloodattack:(NSInteger)attackspeed:(CGFloat)speedequipment:(NSString *)equipment;{self = [super initWithBlood:blood attack:attack speed:speed];if (self) {_equipment = equipment;}return self;}@end

于7月16下午以及17号上午学习,18号整理

,快乐要懂得分享,才能加倍的快乐

继承,便利构造器,初始化方法

相关文章:

你感兴趣的文章:

标签云: