OC_繼承,便利構造器,初始化方法

來源:互聯網
上載者:User

//  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語言中如果針對一個null 指標進行操作,比如賦值,系統運行到這段代碼直接崩潰,而oc中遇到null 指標會把這句代碼當做廢代碼,會執行,但不會有任何效果

    

    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];

    // 當這個對象在初始化過程中出現問題,會返回一個null 指標,如果是null 指標接下來的複製就沒有意義了,跳過去,如果返回一個正常的堆空間指標,繼續賦值

    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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.