文档章节

Objective-c 继承,多态,封装

xtzPioneer
 xtzPioneer
发布于 2015/10/12 18:43
字数 706
阅读 77
收藏 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


© 著作权归作者所有

共有 人打赏支持
xtzPioneer
粉丝 2
博文 92
码字总数 48420
作品 0
杭州
程序员
教程1:Objective-C

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

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

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

爱捣鼓
2014/02/22
0
0
2.1 Objective-C概述

第2章 Objective-C语言基础 iOS的项目中主要采用Objective-C语言编写,因此在开始讲解具体项目之前,本章将介绍Objective-C语言基础。本章重点如下: Objective-C与iOS开发 数据类型和表达式...

长平狐
2013/03/19
121
0
「Objective-C基础」三大特性:封装、继承、多态

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

无忌不悔
2017/08/08
0
0
Objective-C原理系列(一)

Objective-C 简称OC(下面以此代称),是在C语言的基础上,增加了一层最小的面向对象语言。是一种静态输入的语言,即“必须先声明数据中每个变量(或者容器)的数据类型”。但它是一个动态语...

FTD_SL
2016/08/17
38
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Minifilter的动态安装、加载及卸载

MINIFILTER框架的文件系统过滤驱动,无法使用的CreateService和OpenService进行动态加载。 看了一下,使用Inf文件安装Minifilter驱动的方式是在注册表驱动服务项下比传统驱动多创建了Instanc...

simpower
30分钟前
3
0
idea新建springCloud项目(6)- Config Server使用

1.在IDEA新建springCloud项目-Config Server 修改版本,和之前建的eureka项目版本一致,修改完记得刷新: 删除掉不需要的文件: 2.把Config S 服务注册到eureka上去,配置git地址,启动项目 ...

monroeCode
35分钟前
4
0
大数据可视化项目开发总纲

第1章 开发文档总纲 1.1 开发工具清单 名称 版本 备注 Pentaho-bi server pentaho-server-ce-7.1 Pentaho Cde为其内置工具 Pentaho-prd pentaho-prd-ce-7.1 Pentaho Report Designer报表工具...

ZhangLG
35分钟前
4
0
pip安装超时问题

pip3 install --default-timeout=100 tensorflow 设置为100秒 参考: User Guide How to solve ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443) with pip?......

亚林瓜子
37分钟前
2
0
fragment 旋转时保持当前实例

设备旋转时保存Fragment的交互状态: setRetainInstance(true);

zdglf
39分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部