OC-继承-初始化方法-便利构造器(练习题-打僵尸)

需求:

1、定义普通僵尸类:

  实例变量:僵尸总血量、僵尸每次失血量。

  方法:初始化方法、便利构造器被打击失血、死亡。

2、定义路障僵尸类:

  实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。

  方法:初始化方法、便利构造器被打击失血、失去装备、死亡。

3、定义铁桶僵尸类:

  实例变量:僵尸总血量、僵尸每次失血量,道具,弱点。

  方法:初始化方法、便利构造器被打击失血、失去装备、死亡。

4、在main.m中创建普通僵尸对象,设置总血量50,每次失血量为 3。

5、在main.m中创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点。

6、在main.m中创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点。 


main.m

//
//  main.m
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GeneralZombie.h"/* 普通僵尸 */
#import "RoadblockZombie.h"/* 路障僵尸 */
#import "BucketheadZombie.h"/* 铁桶僵尸 */

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        /* 创建普通僵尸对象,设置总血量50,每次失血量为 3 */
        GeneralZombie *genral = [GeneralZombie generalWithTotalBloodValume:50 loseBloodValume:1];
        
        /* 创建路障僵尸对象,设置总血量80,每次失血量为 2,设置道具为路障, 没有弱点 */
        RoadblockZombie *road = [RoadblockZombie roadblockZombieWithTotalBloodValume:80 loseBloodValume:2 prop:@"路障" weakness:@"无"];
        
        /* 创建铁桶僵尸对象,设置总血量120,每次失血量为 1,设置道具为铁桶, 没有弱点 */
        BucketheadZombie *bucket = [BucketheadZombie roadblockZombieWithTotalBloodValume:120 loseBloodValume:1 prop:@"铁桶" weakness:@"无"];
    
    }
    return 0;
}

GeneralZombie.h


<pre name="code" class="objc">//
//  GeneralZombie.h
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface GeneralZombie : NSObject
{
    /* 声明两个实例变量 */
    NSInteger _totalBloodValume;//总血量
    NSInteger _loseBloodValume;//失血量
}

/* 声明setter,getter方法 */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume;
- (NSInteger)totalBloodValume;

- (void)setLoseBloodValume:(NSInteger)loseBloodValume;
- (NSInteger)loseBloodValume;


/* 声明初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
                         loseBloodValume:(NSInteger)loseBloodValume;


/* 声明便利构造器方法 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
                  loseBloodValume:(NSInteger)loseBloodValume;

/* 声明被打击失血方法 */

- (void)loseBlood;


/* 声明死亡方法 */
- (void)die;





@end


 
    

 
    

GeneralZombie.m

<pre name="code" class="objc">//
//  GeneralZombie.m
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import "GeneralZombie.h"

@implementation GeneralZombie
/* 实例变量赋值setter 取值getter */
- (void)setTotalBloodValume:(NSInteger)totalBloodValume
{
    _totalBloodValume = totalBloodValume;
}
- (NSInteger)totalBloodValume
{
    return _totalBloodValume;
}


- (void)setLoseBloodValume:(NSInteger)loseBloodValume
{
    _loseBloodValume = loseBloodValume;
}
- (NSInteger)loseBloodValume
{
    return _loseBloodValume;
}


/* 初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume
                         loseBloodValume:(NSInteger)loseBloodValume
{
    self = [super init];
    if (self) {
        
        _totalBloodValume = totalBloodValume;
        _loseBloodValume = loseBloodValume;
    }
    return self;
}

/* 便利构造器 */
+ (id)generalWithTotalBloodValume:(NSInteger)totalBloodValume
                  loseBloodValume:(NSInteger)loseBloodValume
{
    GeneralZombie *genera = [[GeneralZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];
    return genera;
}


/* 被打击失血 */
- (void)loseBlood
{
    _totalBloodValume -= _loseBloodValume;
    NSLog(@"剩余血量:%ld", _totalBloodValume);
    
}

/* 死亡 */
- (void)die
{
    NSLog(@"Death");
}

@end


 
    

 
    

RoadblockZombie.h  继承于GeneralZombie类

<pre name="code" class="objc">//
//  RoadblockZombie.h
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import "GeneralZombie.h"

@interface RoadblockZombie : GeneralZombie
{
    NSString *_prop;//道具
    NSString *_weakness;//弱点
}

/* 声明setter,getter方法 */
- (void)setProp:(NSString *)prop;
- (NSString *)prop;

- (void)setWeakness:(NSString *)weakness;
- (NSString *)weakness;

/* 声明初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;

/* 声明便利构造器方法 */
+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodVolume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness;

/* 声明失去装备方法 */
- (void)loseprop;
@end


 
    
 
    
 
    

RoadblockZombie.m

<pre name="code" class="objc">//
//  RoadblockZombie.m
//  打僵尸
//
//  Created by dllo on 15/6/29.
//  Copyright (c) 2015年 dllo. All rights reserved.
//

#import "RoadblockZombie.h"

@implementation RoadblockZombie
/* 实例变量赋值setter 取值getter */
- (void)setProp:(NSString *)prop
{
    _prop = prop;
}
- (NSString *)prop
{
    return _prop;
}

- (void)setWeakness:(NSString *)weakness
{
    _weakness = weakness;
}
- (NSString *)weakness
{
    return _weakness;
}

/* 初始化方法 */
- (instancetype)initWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness
{
    self = [super initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume];
    if (self) {
        _prop = prop;
        _weakness = weakness;
    }
    return self;
}

/* 便利构造器 */
+ (id)roadblockZombieWithTotalBloodValume:(NSInteger)totalBloodValume loseBloodValume:(NSInteger)loseBloodValume prop:(NSString *)prop weakness:(NSString *)weakness
{
    RoadblockZombie *road = [[RoadblockZombie alloc]initWithTotalBloodValume:totalBloodValume loseBloodValume:loseBloodValume prop:prop weakness:weakness];
    return road;
}


/* 失去装备 */
- (void)loseprop
{
    NSLog(@"loseProp");
}




@end


 
    
 
    

BucketheadZombie.h  继承于RoadblockZombie类(只需要创建BucketheadZombie类, 不需要写代码, 所有实例变量和代码全部继承父类)

BucketheadZombie.m



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值