OC面向对象的三大特征(封装 继承 多态)习题1
来源:互联网 发布:yum 安装telnet命令 编辑:程序博客网 时间:2024/05/10 23:58
OC面向对象的三大特征
封装 继承 多态
封装
1)完整的说是成员变量的封装。)在成语方法里面的成员变量最好不要使用@public这样会直接暴露在外面被别人随随便便修改,封装的方法还可以达到过滤无效数据的作用。
2)对成员变量只读(readonly):只允许外界访问我的no,不允许外界修改我,只需要提供get方法。
3)对成员变量只写:不允许外界访问我的no,只允许外界修改我,只需要提供set get方法。
继承
1)继承的结构 @interface A : B (A 继承了B,相当于拥有了A里面的所有成员变量和方法)
2)继承的好处:
1> 抽取重复代码
2> 建立了类之间的关系
3> 子类可以拥有父类中的所有成员变量和方法
4> 基本上所有类的根类是NSObject
多态
1)多态:多种形态,父类指针指向子类对象,调用方法时会检测对象的真实形象。
1>没有继承就没有多态
2>代码的体现:父类类型的指针指向子类对象
3>好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
注
1> [self 方法名]可以调用其他对象方法\类方法
习题1
打僵尸。需求:
定义普通僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。方法:初始化、被打击失血、死亡。
定义路障僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
定义铁桶僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
For循环 模拟攻击,创建3个僵尸对象。
(1)、普通僵尸。总血量50,每次失血3.
(2)、路障僵尸。总血量80,有路障时,每次失血2,血量剩余一半时,失去路障,每次失血3.
(3)、铁桶僵尸。总血量120,有铁桶时,每次失血1,血量剩余1/3时,失去铁桶,每次失血3.
循环攻击过程中:每个僵尸被攻击时,输出本次丢失血量,剩余血量。丢失道具时,输出丢失的道具。僵尸死亡时,输出已死亡。
最后一个僵尸死亡时,攻击停止,循环结束。输出总攻击次数。
定义普通僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。方法:初始化、被打击失血、死亡。
定义路障僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
定义铁桶僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
For循环 模拟攻击,创建3个僵尸对象。
(1)、普通僵尸。总血量50,每次失血3.
(2)、路障僵尸。总血量80,有路障时,每次失血2,血量剩余一半时,失去路障,每次失血3.
(3)、铁桶僵尸。总血量120,有铁桶时,每次失血1,血量剩余1/3时,失去铁桶,每次失血3.
循环攻击过程中:每个僵尸被攻击时,输出本次丢失血量,剩余血量。丢失道具时,输出丢失的道具。僵尸死亡时,输出已死亡。
最后一个僵尸死亡时,攻击停止,循环结束。输出总攻击次数。
工程:
Ordinary.h
//// Ordinary.h// Play_Zombie//// Created by jesee on 15/7/12.// Copyright (c) 2015年 jesee. All rights reserved.//#import <Foundation/Foundation.h>@interface Ordinary : NSObject{ NSString *_Name;//僵尸名 int _Allblood;//总血量 int _Lostblood;//正常掉血量 int _Propsblood;//有道具掉血量 int _temp;//中间量存总血量}-(instancetype)initWithName:(NSString *)Name Allblood:(int)Allblood Lostblood:(int)Lostblood Propslood:(int)Propsblood;-(void)Lostlood;-(void)die;-(void)setAllblood:(int)Allblood;-(int)Allbood;@end
#import "Ordinary.h"@implementation Ordinary//初始化-(instancetype)initWithName:(NSString *)Name Allblood:(int)Allblood Lostblood:(int)Lostblood Propslood:(int)Propsblood;{ self = [super init]; if (self) { _Name=Name; _Allblood=Allblood; _Lostblood=Lostblood; _Propsblood=Propsblood; _temp=Allblood; } return self;}-(void)Lostlood{ if (_Allblood>_Lostblood&&_Allblood>0) { _Allblood-=_Lostblood; NSLog(@"普通僵尸 本次丢失血量%d,剩余血量%d",_Lostblood,_Allblood); } else { NSLog(@"普通僵尸 本次丢失血量%d,剩余血量%d",_Allblood,0); [self die]; _Allblood-=_Allblood; }}-(void)die{ NSLog(@"%@ die",_Name);}-(void)setAllblood:(int)Allblood{ _Allblood=Allblood;}-(int)Allbood{ return _Allblood;}@end
Roadblock.h
#import "Ordinary.h"@interface Roadblock : Ordinary-(void)LostProps;-(void)Lostlood;@end
Roadblock.m
#import "Roadblock.h"@implementation Roadblock-(void)LostProps{ NSLog(@"Lost Roadblock");}-(void)Lostlood{ if (_Allblood>_Lostblood&&_Allblood>0) { if (_Allblood>_temp/2) { _Allblood-=_Propsblood; NSLog(@"路障僵尸 本次丢失血量%d,剩余血量%d",_Propsblood,_Allblood); } if (_Allblood<=_temp/2) { if (_Allblood==_temp/2) { [self LostProps]; } _Allblood-=_Lostblood; NSLog(@"路障僵尸 本次丢失血量%d,剩余血量%d",_Lostblood,_Allblood); } } else { NSLog(@"路障僵尸 本次丢失血量%d,剩余血量%d",_Allblood,0); [super die]; _Allblood-=_Allblood; }}@end
Bucket.h
#import "Ordinary.h"@interface Bucket : Ordinary-(void)LostProps;-(void)Lostlood;@end
Bucket.m
#import "Bucket.h"@implementation Bucket-(void)LostProps{ NSLog(@"Lost Bucket");}-(void)Lostlood{ if (_Allblood>_Lostblood&&_Allblood>0) { if (_Allblood>_temp/3) { _Allblood-=_Propsblood; NSLog(@"铁桶僵尸 本次丢失血量%d,剩余血量%d",_Propsblood,_Allblood); } if (_Allblood<=_temp/3) { if (_Allblood==_temp/3) { [self LostProps]; } _Allblood-=_Lostblood; NSLog(@"铁桶僵尸 本次丢失血量%d,剩余血量%d",_Lostblood,_Allblood); } } else { NSLog(@"铁桶僵尸 本次丢失血量%d,剩余血量%d",_Allblood,0); [super die]; _Allblood-=_Allblood; }}@end
main.m
#import <Foundation/Foundation.h>#import "Ordinary.h"#import "Roadblock.h"#import "Bucket.h"int main(int argc, const char * argv[]) { @autoreleasepool { Ordinary *p1=[[Ordinary alloc]initWithName:@"普通僵尸" Allblood:50 Lostblood:3 Propslood:0]; Roadblock *p2=[[Roadblock alloc]initWithName:@"路障僵尸" Allblood:80 Lostblood:3 Propslood:2]; Bucket *p3=[[Bucket alloc]initWithName:@"铁桶僵尸" Allblood:120 Lostblood:3 Propslood:1]; int count=0; while (1) { if ([p1 Allbood]>0) { [p1 Lostlood];count++; } if ([p2 Allbood]>0) { [p2 Lostlood];count++; } if ([p3 Allbood]>0) { [p3 Lostlood];count++; } if ([p1 Allbood]==0&&[p2 Allbood]==0&&[p3 Allbood]==0) { break; } } NSLog(@"总攻击次数%d",count);
0 0
- OC面向对象的三大特征(封装 继承 多态)习题1
- OC面向对象的三大特征(封装 继承 多态)习题3 多态
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
- OC面向对象的三大特征 封装 ,继承,多态
- 黑马程序员--OC面向对象的三大特征——封装、继承、多态
- OC面向对象的三大特征——封装、继承、多态
- OC—面向对象的三大特征 封装、继承、多态
- java、面向对象的三大特征封装、继承、多态
- 面向对象的三大特征-封装,继承,多态
- java面向对象的三大特征:封装,继承,多态
- 面向对象的三大特征:封装、继承、多态
- 面向对象的三大特征--封装/继承/多态
- 面向对象的三大特征:封装、继承、多态。
- 面向对象的三大特征:继承、封装、多态
- 面向对象的三大特征:封装,继承,多态
- java面向对象的三大特征:封装-继承-多态
- 面向对象的三大特征:继承,封装,多态
- PHP面向对象的三大特征: 继承,封装,多态
- 去掉按钮默认边距(非padding)
- RabbitMQ基础
- awk处理 stat 结果,获取时间信息,awk使用一个例子
- MFC导入并显示BMP图片功能实现
- Linux下ps命令详解
- OC面向对象的三大特征(封装 继承 多态)习题1
- 利用ActionFilterAttribute来判断用户是否登陆等等
- 快速排序
- POJ 3278 && HDU 2717 Catch That Cow(bfs)
- 动态代理---动态生成java文件并编译成class文件
- Linux下关闭和开启IPv6的方法
- android gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- C语言结构体(二)
- 欢迎使用CSDN-markdown编辑器