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

原创 2015年07月08日 17:35:48

需求:

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



版权声明:本文为博主原创文章,未经博主允许不得转载。

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

//  main.m //  OC3_继承,便利构造器,初始化方法 // //  Created by dllo on 15/7/16. //  Copyright (c) 2...

OC学习_ 第三天 继承、初始化方法、便利构造器

1.继承作为OC 三大特征之一,它有什么特点?        继承的特性:      1.继承是单向的(从上到下)      2.继承是可传递的      3.继承不能相互继承     ...

OC学习-继承,便利构造器,初始化方法

继承继承继承的主要作用就是保证类的完整以及简化代码.使用时把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法就行特点: 只允许单继承 OC中的根类是NSObject 继承的内容:是...

《IOS_OC》继承、多态、初始化方法、便利构造器

一:继承 面向对象的三大特征:封装(函数的定义封装)、继承(子类继承父类的实例变量和方法)、多态(下面会介绍) 继承的特点如下: 1、继承父类所有的实例变量和方法  2、继承具有单一性,只...

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

// //  Zombie.h //  OC03_继承,便利构造器,初始化方法 // //  Created by dllo on 15/7/16. //  Copyright (c) 20...

OC-继承、初始化方法、便利构造器概念

继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性...
  • han919_
  • han919_
  • 2015年11月13日 08:53
  • 324

OC第三天-继承,初始化方法,便利构造器 ,self,super,方法重写

继承、初始化方法、便利构造器 Person.h#import @interface Person : NSObject{ NSString *_name; //姓名 int ...

iOS前期OC训练OC_02继承,便利构造器,初始化方法

// //  main.m //  OC03_继承, 便利构造器,初始化方法 // //  Created by dllo on 15/7/16. //  Copyright (c) 20...

OC-初始化方法-便利构造器(练习-约分)

定义一个分数类(Fraction) 实例变量:分子, 分母 方法:初始化方法(2个参数), 便利构造器, 约分, 打印, 加, 减, 乘, 除. 提示:加法运算- (Fraction *)addFra...

oc初始化方法,便利构造器

不多说 先上代码: 一。初始化方法 在Teacher.h 文件中先定义 -(id)init; -(id)init:(NSString *)name; 然后在Teacher.m文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC-继承-初始化方法-便利构造器(练习题-打僵尸)
举报原因:
原因补充:

(最多只允许输入30个字)