码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-c 继承,多态,封装

时间:2015-10-12 19:32:27      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

.m文件

//

//  main.m

//  Objective-c 继承

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

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

//


#import <Foundation/Foundation.h>

//引入其他类的头文件是让你实力化的对象认识这是什么鬼

//引入Car头文件

#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


Objective-c 继承,多态,封装

标签:

原文地址:http://my.oschina.net/u/2483781/blog/516004

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!