黑马程序员-----OC学习之类与对象


1.类的概念:
        一类事物共同特征和行为的抽象;
        例如:车类: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;
}

    
    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值