OC - 类
这是OC第一节课,
类:是一组具有相同特征和行为的食物的抽象 对象就是例的实例
类的定义分两部分:借口部分和实现部分,通常写在两个文件中
接口部分:声明了类名.父类名.实例变量(行为)
实现部分:方法的具体实现(具体行为)
接口跟实现分别放在.h和.m文件中,并且.m文件中必须实现,.h中声明的方法
PerPerson * p = [[Person alloc]init];
通过调用init方法为清空的内存重新赋值
OO(Object Oriented) 面向对象
OO(Object Oriented Programming)面向对象编程
main.m
#import <Foundation/Foundation.h>
//1.引用类的头文件
#import "Student.h"
#import "Teather.h"
#import "Cup.h"
int main(int argc, const char * argv[])
{
//2.使用类 给对象分配内存空间
//[谁调用 方法名];
Student * stu = [Student alloc];
//3.对 对象 初始化
stu = [stu init];
//类 * 对象 =
Student * stu1 =[[Student alloc] init];
//利用 stu1对象 调用自身方法
[stu1 study];
[stu1 sleep];
Teather * ter = [[Teather alloc]init];
[ter singing];
Cup * c = [[Cup alloc]init];
[c drinking];
//实例变量被改变为public后,调用对象的实例变量
stu1->_name = @"深情君";
NSLog(@"%@",stu1->_name);
return 0;
}
Student.h
#import <Foundation/Foundation.h>
@interface Student : NSObject{
//1.借口部分(所属的文件以.h结尾)
//实例变量的列表 类的特征列表
@public
NSString * _name; //姓名
NSString * _sex; //性别
int _age; //年龄
//实例变量的使用:
//1.类的内部
//在类的内部,所有方法 都必须在实现部分实现
//2.外部访问实例变量时,有坑监督的设置
//三种访问权限(可见度)
//@publec 公开的 表示实例变量可以 在外部 随意调用和改动
//@protected 受保护的表示实例变量不可以在外部呗调用和修改(OC默认)
//@private 私有的 不可以在外部被调用和改变
}
//类的行为列表
//方法列表(类的方法在接口部分,只是生命,不实现)
-(void) study; //学习
-(void) sleep; //睡觉
@end
Student.m
#import "Student.h"
@implementation Student
//实现部分:(.m文件)
//接口部分中的 所有方法 都必须在实现部分实现
-(void)study
{
_name = @"赵云龙";
_age = 30;
_sex = @"女W";
NSLog(@"我在打球,%@ %d",_name,_age);
}
-(void)sleep
{
// _name = @"伊泽瑞尔";
_sex = @"爷们";
NSLog(@"我在做梦");
}
@end
打僵尸。需求:
定义普通僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量。方法:初始化、被打击失血、死亡。
定义路障僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
定义铁桶僵尸类:实例变量:僵尸种类、僵尸总血量、僵尸每次失血量,道具,弱点。方法:初始化、被打击失血、失去装备、死亡。
For循环 模拟***,创建3个僵尸对象。
(1)、普通僵尸。总血量50,每次失血3.
(2)、路障僵尸。总血量80,有路障时,每次失血2,血量剩余一半时,失去路障,每次失血3.
(3)、铁桶僵尸。总血量120,有铁桶时,每次失血1,血量剩余1/3时,失去铁桶,每次失血3.
循环***过程中:每个僵尸被***时,输出本次丢失血量,剩余血量。丢失道具时,输出丢失的道具。僵尸死亡时,输出已死亡。
最后一个僵尸死亡时,***停止,循环结束。输出总***次数。
#import <Foundation/Foundation.h> @interface CommonCorpse : NSObject { @public NSString * _CorpseType;//僵尸种类 int _OverallBloodFiow;//总血量 int _EveryHemorrhage;//每次失血量 } -(id)initWithcorpsetype; -(int)hit;//打 -(void)dead;//死 @end #import "CommonCorpse.h" @implementation CommonCorpse//普通僵尸 -(id)init { self = [super init]; if (self) { _CorpseType = @"普通僵尸"; _OverallBloodFiow = 50; _EveryHemorrhage = 3; } return self; } -(int)hit { _OverallBloodFiow = _OverallBloodFiow - _EveryHemorrhage; NSLog(@"失去掉%d",_EveryHemorrhage); NSLog(@"剩%d血", _OverallBloodFiow); return _OverallBloodFiow; } -(void)dead { NSLog(@"僵尸死了"); } @end CommonCorpse * com = [[CommonCorpse alloc] init]; // for (int i = 0; com ->_OverallBloodFiow > 0;i++ ) { // if ([com hit] <=0) { // [com dead]; // } // }
#import <Foundation/Foundation.h> #import "CommonCorpse.h" @interface LZCorpse : CommonCorpse { @public NSString * _prop;//道具 NSString * _weakness;//弱点 } -(void)equip;//装备 @end #import "LZCorpse.h" @implementation LZCorpse - (id)init { self = [super init]; if (self) { _CorpseType = @"路障僵尸"; _OverallBloodFiow = 80; _EveryHemorrhage = 2; _prop = @"路障"; _weakness = @"见光死"; } return self; } -(void)equip { NSLog(@"失去装备%@",_prop); _prop = Nil; _EveryHemorrhage = 3; } @end LZCorpse * LZ = [[LZCorpse alloc] init]; // for (int i = 0; LZ ->_OverallBloodFiow > 0; i++) { // if (LZ ->_OverallBloodFiow <= 40 && LZ->_prop != nil) { // [LZ equip]; // } // if ([LZ hit] <= 0) { // [LZ dead]; // } // }
#import <Foundation/Foundation.h> #import "LZCorpse.h" @interface Drum :LZCorpse { } @end #import "Drum.h" @implementation Drum - (id)init { self = [super init]; if (self) { _CorpseType = @"铁桶僵尸"; _OverallBloodFiow = 120; _EveryHemorrhage = 1; _prop = @"铁桶"; _weakness = @"见光死"; } return self; } @end Drum * drum = [[Drum alloc]init]; // for (int i = 0; drum ->_OverallBloodFiow > 0; i++) { // if (drum ->_OverallBloodFiow <= 40 && drum ->_prop != nil) { // [drum equip]; // } // if ([drum hit ]<= 0) { // [drum dead]; // } // }
CommonCorpse * com = [[CommonCorpsealloc] init];
LZCorpse * LZ = [[LZCorpsealloc] init];
Drum * drum = [[Drumalloc]init];
for (int i = 1; com ->_OverallBloodFiow > 0 || LZ ->_OverallBloodFiow > 0 || drum ->_OverallBloodFiow > 0; i++) {
if (com ->_OverallBloodFiow > 0) {
int HP1 = [com hit];
if (HP1 <= 0) {
[com dead];
NSLog(@"打了%d次,普通僵尸死了",i);
}
}
if (LZ ->_OverallBloodFiow > 0) {
int HP2 = [LZ hit];
if (HP2 <= 40 && LZ->_prop != nil) {
[LZ equip];
}
if (HP2 <= 0) {
[LZ dead];
NSLog(@"打了%d次,路障僵尸死了",i);
}
}
if (drum ->_OverallBloodFiow > 0) {
int HP3 = [drum hit];
if (HP3 <= 40 && drum->_prop != nil) {
[drum equip];
}
if (HP3 <= 0) {
[drum dead];
NSLog(@"打了%d次,铁桶僵尸死了",i);
}
}
}
return0;
}
转载于:https://blog.51cto.com/8739847/1381106