OC-继承-初始化方法-便利构造器(练习题-打僵尸)
2015-07-08 17:35
381 查看
需求: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; @endGeneralZombie.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"); } @endRoadblockZombie.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;@endRoadblockZombie.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");}@endBucketheadZombie.h 继承于RoadblockZombie类(只需要创建BucketheadZombie类,不需要写代码, 所有实例变量和代码全部继承父类)BucketheadZombie.m
相关文章推荐
- PostgreSQL教程(三):表的继承和分区表详解
- Lua面向对象之类和继承浅析
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C++实现不能被继承的类实例分析
- js继承 Base类的源码解析
- Javascript 面向对象 继承
- JavaScript 继承使用分析
- Javascript面向对象编程(二) 构造函数的继承
- javascript面向对象之Javascript 继承
- JavaScript 对象、函数和继承
- 关于JavaScript的面向对象和继承有利新手学习
- JavaScript 继承详解(一)
- JavaScript 继承详解(二)
- javascript继承的六大模式小结
- JavaScript中的原型和继承详解(图文)
- JavaScript中继承用法实例分析
- Javascript中3种实现继承的方法和代码实例
- 通过继承IHttpHandle实现JS插件的组织与管理
- JS继承用法实例分析
- php开发过程中关于继承的使用方法分享