文档章节

Objective-c 继承,多态,封装

xtzPioneer
 xtzPioneer
发布于 2015/10/12 18:43
字数 706
阅读 77
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

.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


© 著作权归作者所有

xtzPioneer
粉丝 2
博文 92
码字总数 48420
作品 0
杭州
程序员
私信 提问
加载中
请先登录后再评论。
教程1:Objective-C

Objective-C的教程已经看过了。 内容大概有:[Objective-C基础语法(if/else/switch/for...),关键字,运算符],[面向对象(封装/继承/多态)],[Foundation框架常用类],[内存管理],[协...

殷美洪
2013/03/11
278
0
各语言设计思想的独特之处:C/C++、Java、Python、Objective C、Groovy

说明:本文章纯属个人观点,不保证绝对正确,欢迎大家批评和指正,同时我自己也会对本文不断的更新和完善。 本人学过多种语言,有的是工作需要,有的则是因兴趣自学,我学习语言目的不完全是...

爱捣鼓
2014/02/22
1.9K
0
「Objective-C基础」三大特性:封装、继承、多态

我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这三大特性是学习类的时候,必须理解的问题,既是基础,更该给予重视。 一、封装(Encapsulation) 封装就是对类中的一些...

无忌不悔
2017/08/08
0
0
2.1 Objective-C概述

《iPhone与iPad开发实战--iOS经典应用剖析》第2章Objective-C语言基础,通过本章的学习,读者可以了解Objective-C基本语法,包括:数据类型、表达式,还有类、对象等概念。本节为Objective-C...

长平狐
2013/03/19
167
0
Objective-C 程序设计(第四版)复习摘要(上)

在进一步学习《Effective Objective-C 2.0》之前,把《Objective-C 程序设计 2.0(第四 版)》一字不漏的刷了一遍~ 下面列出了之前初次学习遗漏或者很重要的知识点。(很基础哈~,高手勿喷)...

Herbert77
2015/09/02
29
0

没有更多内容

加载失败,请刷新页面

加载更多

HashMap解析(主要JDK1.8,附带1.7出现的问题以及区别)

按问题的形式来吧,这些大多是我自己总结的,如有错误请及时指正谢谢 1.你了解HashMap么,可以说说么?   首先,HashMap是一种数据结构,可以快速的帮我们存取数据。它的底层数据结构在1.7...

osc_gzy7qjj6
51分钟前
16
0
CentOS8.1操作系下使用通用二进制包安装MySQL8.0(实践整理自MySQL官方)

  写在前的的话: 在IT技术日新月异的今天,老司机也可能在看似熟悉的道路上翻车,甚至是大型翻车现场!自己一个人开车过去翻个车不可怕,可怕的是带着整个团队甚至是整个公司一起翻车山崖...

osc_494omtst
52分钟前
15
0
关于对健壮性代码的理解

这两天学到了很多知识,对项目的严密性有了极为深刻的理解,简而言之,身为前端开发者要站在用户的角度去写相关代码,而不能仅仅局限于理所当然,也不可以认为数据有便有,没有便没有,身为开...

osc_47pscir3
54分钟前
13
0
【Spring注解驱动开发】组件注册-@ComponentScan-自动扫描组件&指定扫描规则

写在前面 在实际项目中,我们更多的是使用Spring的包扫描功能对项目中的包进行扫描,凡是在指定的包或子包中的类上标注了@Repository、@Service、@Controller、@Component注解的类都会被扫描...

osc_a5w6ccj0
55分钟前
10
0
学习c++ (五) 用duilib 编写界面

还是那句话,不想用MFC,写的界面丑,不想依赖MFC的一些库,在网上闲逛,发现duilib还可以,至于QT,有时间再研究, dulib已经没人更新了,估计也是翻不出什么花样了,但研究一下总算是C++的...

osc_jklrr90y
56分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部