Objective-c 繼承,多態,封裝

.m文件spa

//.net

//  main.m3d

//  Objective-c 繼承指針

//  Created by 非凡 on 15/10/10.orm

//  Copyright (c) 2015 非凡. All rights reserved.對象

//繼承


#import <Foundation/Foundation.h>get

//引入其餘類的頭文件是讓你實力化的對象認識這是什麼鬼it

//引入Car頭文件io

#import "Car.h"

//引入zilei頭文件

#import "zilei.h"

//引入Father頭文件

#import "Father.h"

//引入Son頭文件

#import "Son.h"

//引入chievement頭文件

#include "chievement.h"

//引入Jisuan頭文件

#include "Jisuan.h"



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

    @autoreleasepool {

        

         NSLog(@"--------------------------------------------");

         //父類

        //建立對象或實例化對象

        Car* _car=[Car new ];

        //調用實例化後的方法

        [_car setNumber:4];

        [_car run];

        

        

        //繼承後的子類,子類能夠繼承父類的方法和屬性

        //建立對象或實例化對象

        zilei* zx =[zilei new];

         //調用實例化後的方法

        [zx setNumber:5];

        [zx setName:@"雪弗萊"];

        [zx setSpeed:80];

        [zx run ];

        

        

        //父親兒子跑跳練習

        NSLog(@"--------------------------------------------");

        //建立對象或實例化對象

        Father* ability1=[Father new];

         //調用實例化後的方法

        [ability1 setNumber:2];

        [ability1 run];

        [ability1 jump];

        //建立對象或實例化對象

        Son* ability2=[Son new];

         //調用實例化後的方法

        [ability2 set_Number:1];

        [ability2 run];

        [ability2 jump];

        [ability2 run];

        

        

          //父類的指針指向子類,調用的是子類的方法

        //多態應用

        //多態以類做爲參數,那麼就只能輸入類名,其餘參數均無效

        NSLog(@"-------------------------------------");

        

        [ability2 duotai:ability1];



        

        

         NSLog(@"--------------------------------------------");

        //練習2練習封裝(屬性的封裝)

        //建立對象或實例化對象

        chievement* perform=[chievement new];

        //調用實例化後的方法

        [perform setOc_achievement:30];

        [perform setC_achievement:20];

        [perform setZongfen];

        [perform setPingjunfen];

        [perform printf];

        //調用返回值

       // [perform setZongfen];

        //[perform setPingjunfen];

        

        //打印返回值

        NSLog(@"總和爲:%.2f 平均值爲:%.2f",[perform setZongfen],[perform setPingjunfen]);

        

        

          NSLog(@"--------------------------------------------");

        //練習三  

        //建立對象或實例化對象

        Jisuan* jieguo=[Jisuan new];

        //調用實例化後的方法

        // 輸入參數

        

        [jieguo setA:13 setB:5];

        

        NSLog(@"和值爲:%i,平均值爲:%i",[jieguo Hezhi], [jieguo Pingjunshu]);

        

    

    }

    return 0;

}



zilei.h文件

#import <Foundation/Foundation.h>


//引入Car父類頭文件,讓子類知道Car是什麼。

#import "Car.h"


//子類也能夠有本身的屬性和本身的方法

@interface zilei :Car{

    NSString * name;

    int Speed;

}


  //設置屬性

-(void)setSpeed:(int)newSpeed;

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

//設置方法

-(void)run;

-(void)_run;


@end

zilei.m文件

//

//  zilei.m

//  Objective-c 繼承

//

//  Created by 非凡 on 15/10/10.

//  Copyright (c) 2015 非凡. All rights reserved.

//


#import "zilei.h"


@implementation zilei

-(void)run{

    

    //super的意思是父類,super能夠調用父類的方法

    //[super run];

    //self 的意思是自己,self能夠調用本類中的方法

    [self _run];

    

    

    

    //NSLog(@"%i車是%@,的速度是%i",_number,name,Speed);

}

-(void)setSpeed:(int)newSpeed{

    Speed=newSpeed;

}


-(void)_run{

    NSLog(@"%i車是%@,的速度是%i",_number,name,Speed);

}


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

    name=newName;

}


@end


Father.m文件

#import "Father.h"


@implementation Father

-(void)setNumber:(int)newNumber{

    number=newNumber;

 

}

-(void)run{

    NSLog(@"父親和兒子都能跑");

}

-(void)jump{

    NSLog(@"父親能跳%i",number);

}


//多態用法

//當你將類做爲參數類型時,就是對不一樣的方法及屬性響應不一樣

-(void)duotai:(Father*)newduotai{

    

    NSLog(@"父親能跳%i",number);

}

@end

相關文章
相關標籤/搜索