一类事物共同特征和行为的抽象;
例如:车类:Car
共同的特征:颜色 速度 轮子;
共同的行为:跑 停止;
2.对象的概念:
类的具体的个体;
例如:东风21d(车类的对象) BYD(车的对象) 解放打开车(车类的对象);
3.类的构成:
1.类名;例如人;
2.属性;例如身高 体重 姓名;
3.方法(行为);跑步 走路 打篮球;
4.类的定义分为类的声明和实现:
#import
#pragma mark子弹类的声明
@interface Bullet:NSObject
{
@public;
int _bulletCount ;
NSString *_size;
}
@end
#pragma mark -
#pragma mark子弹类的实现
@implementation Bullet
@end
#pragma mark 枪的定义
@interface Gun: NSObject
{
@public;
NSString *size;
}
-(void)shoot:(Bullet *)bullet;
@end
#pragma mark -
#pragma mark 枪的实现
@implementation Gun
-(void)shoot:(Bullet *)bullet{
if (bullet->_bulletCount > 0)
{
bullet->_bulletCount--;
NSLog(@"枪正在突突突。。。。还剩%d发子弹",bullet->_bulletCount);
}else
NSLog(@"请换子弹");
}
@end
#pragma mark -
#pragma mark士兵类的定义
@interface Soldier:NSObject
{
@public;
NSString *_name;
int life;
int level;
}
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet;
@end
#pragma mark -
#pragma mark士兵类的实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet
{
[gun shoot :bullet];
}
@end
int main(){
Soldier *s =[Soldier new];
s->_name = @"乔峰";
s->life = 98;
s->level = 2;
Gun *gun = [Gun new];
gun->size =@"小米加步枪";
Bullet *myBullet = [Bullet new];
myBullet->_size =@"5mm口径";
myBullet->_bulletCount = 3;
[s fireByGun:gun andBullet:myBullet];
return 0;
}
5.OC中对象的创建:
Car *p = [Car new];表示用Car类实例化了一个实例对象,对象的名称是p;
[Car new]做了3件事情:
1.向计算机申请内存空间;
2.给类中的每一个成员初始化值;
3.返回新申请的空间的首地址;
6.实例:创建一个类和一个对象并且用对象访问实例变量值(属性)
//1.在上述车类的声明部分的大括号中加入@public表示公用
//2.创建一Car类型的对象car1;
Car *car1 = [Car new];
//3.用指针间接访问实例变量值或者称属性值;
car1->lunzi = 3 ;//表示给轮子设置个数为3;
car1->speed = 150;
car1->color = @“蓝色”;
//4.查看车的信息;
NSLog(@“轮子:%d,速度:%d,颜色:%@”,car1->lunzi,car1->speed, car1->color);
7.无参方法(或者称行为)的声明的实现及调用:前面是加号表示类方法;减号表示对象方法;
#import
#pragma mark子弹类的声明
@interface Bullet:NSObject
{
@public;
int _bulletCount ;
NSString *_size;
}
@end
#pragma mark -
#pragma mark子弹类的实现
@implementation Bullet
@end
#pragma mark 枪的定义
@interface Gun: NSObject
{
@public;
NSString *size;
}
-(void)shoot:(Bullet *)bullet;
@end
#pragma mark -
#pragma mark 枪的实现
@implementation Gun
-(void)shoot:(Bullet *)bullet{
if (bullet->_bulletCount > 0)
{
bullet->_bulletCount--;
NSLog(@"枪正在突突突。。。。还剩%d发子弹",bullet->_bulletCount);
}else
NSLog(@"请换子弹");
}
@end
#pragma mark -
#pragma mark士兵类的定义
@interface Soldier:NSObject
{
@public;
NSString *_name;
int life;
int level;
}
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet;
@end
#pragma mark -
#pragma mark士兵类的实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet
{
[gun shoot :bullet];
}
@end
int main(){
Soldier *s =[Soldier new];
s->_name = @"乔峰";
s->life = 98;
s->level = 2;
Gun *gun = [Gun new];
gun->size =@"小米加步枪";
Bullet *myBullet = [Bullet new];
myBullet->_size =@"5mm口径";
myBullet->_bulletCount = 3;
[s fireByGun:gun andBullet:myBullet];
return 0;
}
8.有参方法的声明和实现:
定义的形式:
-(返回值类型)方法名1:(参数类型1)参数名1 and:(参数类型2)参数名2;
例如定义一个求和的方法:
//方法的声明
-(int)sum:(int)x and:(int)y;
//方法的实现将它拷贝一份把分号改为大括号:
-(int)sum:(int)x and:(int)y{
}
以上那个有参方法的使用注意:
1.方法的类型 :对象方法;
2.方法的返回值类型 :int类型;
3.方法的参数是:x y;
4.参数的类型:第一个是int 第二个是int;
5.方法名是:sum:and:(注意冒号也是方法名的一部分)
#import
#pragma mark子弹类的声明
@interface Bullet:NSObject
{
@public;
int _bulletCount ;
NSString *_size;
}
@end
#pragma mark -
#pragma mark子弹类的实现
@implementation Bullet
@end
#pragma mark 枪的定义
@interface Gun: NSObject
{
@public;
NSString *size;
}
-(void)shoot:(Bullet *)bullet;
@end
#pragma mark -
#pragma mark 枪的实现
@implementation Gun
-(void)shoot:(Bullet *)bullet{
if (bullet->_bulletCount > 0)
{
bullet->_bulletCount--;
NSLog(@"枪正在突突突。。。。还剩%d发子弹",bullet->_bulletCount);
}else
NSLog(@"请换子弹");
}
@end
#pragma mark -
#pragma mark士兵类的定义
@interface Soldier:NSObject
{
@public;
NSString *_name;
int life;
int level;
}
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet;
@end
#pragma mark -
#pragma mark士兵类的实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet
{
[gun shoot :bullet];
}
@end
int main(){
Soldier *s =[Soldier new];
s->_name = @"乔峰";
s->life = 98;
s->level = 2;
Gun *gun = [Gun new];
gun->size =@"小米加步枪";
Bullet *myBullet = [Bullet new];
myBullet->_size =@"5mm口径";
myBullet->_bulletCount = 3;
[s fireByGun:gun andBullet:myBullet];
return 0;
}
9.实例讲解:
人吃东西会增加体重,没吃一样东西体重增加0.6,人散步会减少体重 没散步100步减少体重0.2 请用面向对象的方法来实现;
#import
#pragma mark子弹类的声明
@interface Bullet:NSObject
{
@public;
int _bulletCount ;
NSString *_size;
}
@end
#pragma mark -
#pragma mark子弹类的实现
@implementation Bullet
@end
#pragma mark 枪的定义
@interface Gun: NSObject
{
@public;
NSString *size;
}
-(void)shoot:(Bullet *)bullet;
@end
#pragma mark -
#pragma mark 枪的实现
@implementation Gun
-(void)shoot:(Bullet *)bullet{
if (bullet->_bulletCount > 0)
{
bullet->_bulletCount--;
NSLog(@"枪正在突突突。。。。还剩%d发子弹",bullet->_bulletCount);
}else
NSLog(@"请换子弹");
}
@end
#pragma mark -
#pragma mark士兵类的定义
@interface Soldier:NSObject
{
@public;
NSString *_name;
int life;
int level;
}
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet;
@end
#pragma mark -
#pragma mark士兵类的实现
@implementation Soldier
-(void)fireByGun:(Gun *)gun andBullet :(Bullet *)bullet
{
[gun shoot :bullet];
}
@end
int main(){
Soldier *s =[Soldier new];
s->_name = @"乔峰";
s->life = 98;
s->level = 2;
Gun *gun = [Gun new];
gun->size =@"小米加步枪";
Bullet *myBullet = [Bullet new];
myBullet->_size =@"5mm口径";
myBullet->_bulletCount = 3;
[s fireByGun:gun andBullet:myBullet];
return 0;
}