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

//

//  Zombie.h

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Zombie :NSObject

// 特征

{

    @private

   NSInteger _blood;

   NSInteger _attack;

   CGFloat _speed;

    

}



// 行为

// 对方法的重写

- (void)walk;

- (void)attack;

- (void)dead;



// 自定义初始化方法的声明

- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed;



// 便利构造器

+ (Zombie *)zombieWithBlood:(NSInteger )blood

                     attack:(NSInteger )attack

                      speed:(CGFloat)speed;












@end











//

//  Zombie.m

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import "Zombie.h"


@implementation Zombie

- (void)walk{

    NSLog(@"普通僵尸正在走");

}

- (void)attack{

    NSLog(@"普通僵尸正在攻击");

}

- (void)dead{

    NSLog(@"普通僵尸正在死");

}


- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed{

    //完整版的初始化方法

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

   self = [superinit];

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

   if (self ) {

       _speed =speed;

       _blood =blood;

       _attack =attack;

    }

    return self;

}


    // C语言中如果针对一个空指针进行操作,比如赋值,系统运行带这句代码系统马上崩溃,OC遇到空指针会把这句代码当成一句费代码,会执行,但不会有任何结果

// 类方法

     //便利构造器把创建对象的过程放到了程序的.m文件中,这样通过类这届就能创建出一个对象出来

     //系统类提供了很多便利构造器的方法



    

    



+ (Zombie *)zombieWithBlood:(NSInteger )blood

                     attack:(NSInteger )attack

                      speed:(CGFloat)speed{

   Zombie *zombie=[[Zombiealloc] initWithBlood:bloodattack:attack speed:speed];

   return zombie;

    

    

    

}

@end







//

//  LuZhangZombie.h

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Zombie.h"

@interface LuZhangZombie :Zombie

{

    //子类只需要写自己特有的特征就可以,其余的特征都会继承

   NSString *_equipment;

}


//- (void)walk;

//- (void)attack;

//- (void)dead;

- (void)loseEquipment;


- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed

          equipment:(NSString *)equipment;

@end









//

//  LuZhangZombie.m

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import "LuZhangZombie.h"


@implementation LuZhangZombie

- (void)walk{

    NSLog(@"路障僵尸正在走");

}

- (void)attack{

    NSLog(@"路障僵尸正在攻击");

}

- (void)dead{

    NSLog(@"路障僵尸正在死");

}

- (void)loseEquipmen{

    NSLog(@"路障将是丢失装备");

}

- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed

          equipment:(NSString *)equipment{

    

    

   self = [superinitWithBlood:blood attack:attack speed:speed];

   if (self) {

       _equipment =equipment;

    }

    

    

    

    return self;

}

@end















//

//  TieTongZombie.h

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import "LuZhangZombie.h"


@interface TieTongZombie :LuZhangZombie

{

   NSString *_weakness;

}


- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed

          equipment:(NSString *)equipment

           weakness:(NSString *)weakness;




@end

















//

//  TieTongZombie.m

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import "TieTongZombie.h"


@implementation TieTongZombie

- (void)walk{

    // super的作用是寻找继承过来的方法,并且执行该方法

    [superwalk];

    NSLog(@"铁桶僵尸正在走");

}

- (void)attack{

    NSLog(@"铁桶僵尸正在攻击");

}

- (void)dead{

    NSLog(@"铁桶僵尸正在死");

}

- (void)loseEquipmen{

    NSLog(@"铁桶将是丢失装备");

}

- (id)initWithBlood:(NSInteger)blood

             attack:(NSInteger)attack

              speed:(CGFloat)speed

          equipment:(NSString *)equipment

           weakness:(NSString *)weakness{

    

   self = [super initWithBlood:blood attack:attack speed:speed equipment:equipment];

   if (self) {

       _weakness= weakness;

    }

    

    

    

    return self;

}



@end













//

//  main.m

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

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 zhozhicheng. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "LuZhangZombie.h"

#import "TieTongZombie.h"


int main(int argc,const char * argv[]) {

    //继承:子类会继承父类所有的特征还有行为

//    // 当对象在执行方法的时候,子类重写了父类的方法,系统会优先使用子类的方法,如果没有重写,则用父类的方法

//    LuZhangZombie *LuZom =[[LuZhangZombie alloc] init];

//    [LuZom walk];

//    [LuZom attack];

//    

//    TieTongZombie *tieZom = [[TieTongZombie alloc] init];

//    [tieZom walk];

//    

//    // 继承是单向的,一个类只能有一个父类,但是一个类可以有无数个子类

//    // NSObject是所有类的父类,也可以称为基类

//    // 类的继承是有传递性的

//    

//    NSLog(@"%@",[tieZom class]);

    

    

    LuZhangZombie *zom =[[LuZhangZombiealloc]initWithBlood:100attack:20 speed:10equipment:@"路障"];

    

    

    

    

    

    


    

    

   return 0;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值