OC_继承,便利构造器,初始化方法

//  main.m

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import <Foundation/Foundation.h>

#import"LuZhangZombie.h"

#import "TieTongZombie.h"



int main(int argc, const char * argv[]) {

    // 继承:子类继承父类所有的特征还有行为

    // 当对象在执行方法的时候,子类重写父类的方法,系统会使用子类的方法,如果没有重写,则用父类的方法

//    LuZhangZombie *luZom =[[LuZhangZombie alloc] init];

//    [luZom walk];

//    [luZom attack];

//    [luZom loseEquipment];

//    

//    TieTongZombie *tieZom =[[TieTongZombie alloc] init];

//    [tieZom walk];

    

    // 继承是单向的,一个类只能有一个父类,但是一个类可以有无数个子类

    // NSObject是所有类的父类,也可以称为基类

    // 类的继承是有传递性的

    

//    NSLog(@"%@",[tieZom class]);

    

    // c语言中如果针对一个空指针进行操作,比如赋值,系统运行到这段代码直接崩溃,oc中遇到空指针会把这句代码当做废代码,会执行,但不会有任何效果

    

    Zombie *zom =[Zombie  zombieWithBlood:100 attack:20 speed:10];

    [zom attack];

    return 0;

}

//  Zombie.h

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Zombie : NSObject


// 特征

{

    NSInteger _blood;

    NSInteger _attack;

    CGFloat _speed;

}





// 行为

-(void)walk;

-(void)attack;

-(void)dead;



-(id)initWithBlood:(NSInteger)blood

            attack:(NSInteger)attack

             speed:(CGFloat)speed;




// 便利构造器




//+ (Zombie *)zombieWithBlood:(NSInteger)blood attack:(NSInteger)attack speed:(CGFloat)speed;


+(Zombie *)zombieWithBlood:(NSInteger)blood attack:(NSInteger)attack speed:(CGFloat)speed;


//+ (Zombie *)zombieWithBlood:(NSInteger)blood attack:(NSInteger)attack speed:(CGFloat)speed;



@end

//  Zombie.m

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import "Zombie.h"


@implementation Zombie


-(void)walk{

    NSLog(@"普通僵尸正在走");

}

-(void)attack{

    NSLog(@"普通僵尸正在攻击");

    

}

-(void)dead{

    NSLog(@"普通僵尸正在死");

}


自定义初始化方法的声明

-(id)initWithBlood:(NSInteger)blood

            attack:(NSInteger)attack

             speed:(CGFloat)speed

{

    // 完整版的初始化方法

    // 县调用一下父类的初始化方法,对父类继承过来的成员变量进行设置

    self =[super init];

    // 当这个对象在初始化过程中出现问题,会返回一个空指针,如果是空指针接下来的复制就没有意义了,跳过去,如果返回一个正常的堆空间指针,继续赋值

    if (self){

        _speed =speed;

        _blood =blood;

        _attack=attack;

        

    }

    return self;

    

    

    

}



+ (Zombie *)zombieWithBlood:(NSInteger)blood attack:(NSInteger)attack speed:(CGFloat)speed{

//     类方法

//     便利构造器把创建对象的过程放到了程序的.m文件中,这样通过类,直接就能直接创造一个对象出来

//    系统类提供了很多的便利构造器的方法


    Zombie *zom = [[Zombie alloc] initWithBlood:blood attack:attack speed:speed];

    return zom;

    

    

}



@end


//  Person.h

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/17.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Person : NSObject

// 3个成员变量

{

    NSString *_name;

    NSString *_sex;

    NSInteger _age;

    

}




// sayHi方法

-(void)sayHi;



//设置器访问器

-(void)setName:(NSString *)name;

-(void)setSex:(NSString *)sex;

-(void)setAge:(NSInteger)age;


-(NSString *)name;

-(NSString *)sex;

-(NSInteger)age;


//自定义初始化方法(3个成员变量)

-(id)initWithName:(NSString *)name

              sex:(NSString *)sex

              age:(NSInteger)age;


//遍历构造器(3个成员变量)

+(Person *)personWithName:(NSString *)name

                      sex:(NSString *)sex

                      age:(NSString *)age;


@end


//  Person.m

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/17.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import "Person.h"


@implementation Person

-(void)sayHi{

    NSLog(@"%@, %@, %ld", _name, _sex, _age);

}



//设置器访问器

-(void)setName:(NSString *)name{

    _name=name;

}

-(void)setSex:(NSString *)sex{

    _sex=sex;

}

-(void)setAge:(NSInteger)age{

    _age=age;

}


-(NSString *)name{

    return _name;

}

-(NSString *)sex{

    return _sex;

}

-(NSInteger)age{

    return _age;

}

//自定义初始化方法(3个成员变量)

-(id)initWithName:(NSString *)name

              sex:(NSString *)sex

              age:(NSInteger)age

{   self =[super init];

    if (self) {

        _name =name;

        _sex =sex;

        _age =age;

    }

    

    

    return self;

}


//遍历构造器(3个成员变量)

+(Person *)personWithName:(NSString *)name

                      sex:(NSString *)sex

                      age:(NSString *)age

{

    

    Person *person=[[Person alloc] initWithName:name sex:sex age:age];

    return person;

}

@end

//  LuZhangZombie.m

//  OC3_继承,便利构造器,初始化方法

//

//  Created by dllo on 15/7/16.

//  Copyright (c) 2015 cml. All rights reserved.

//


#import "LuZhangZombie.h"


@implementation LuZhangZombie

-(void)walk{

    NSLog(@"路障僵尸正在走");

}

-(void)attack{

    NSLog(@"路障僵尸正在攻击");

}

-(void)dead{

    NSLog(@"路障僵尸正在死");

}

-(void)loseEquipment{

    NSLog(@"路障僵尸失去了装备");

}



-(id)initWithBlood:(NSInteger)blood

            attack:(NSInteger)attack

             speed:(CGFloat)speed

         equipment:(NSString *)equipment{

    self = [super initWithBlood:blood attack:attack speed:speed];

    if (self) {

        _equipment=equipment;

    }

    

    return self;

}


@end





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值