文档章节

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
2.1 Objective-C概述

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

长平狐
2013/03/19
121
0
各语言设计思想的独特之处:C/C++、Java、Python、Objective C、Groovy

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

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

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

无忌不悔
2017/08/08
0
0
Objective-C 继承新的认识以及作用

iOS 三大特性 继承 多态 以及 封装 下面就是对继承的更为深刻的认识。 假如你准备重写NavigationView 那么就需要让其自动生成返回键 以及其他功能。 如: #import <UIKit/UIKit.h> @interfa...

_pioneer_
2016/03/22
30
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
26
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部