您的位置:首页 > 职场人生

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

2015-07-30 19:24 726 查看
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子
4000
弹类的实现
@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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: