文档章节

OC三大特性之一:多态

 蒲公英6_6守候
发布于 2015/10/12 22:57
字数 317
阅读 15
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

多态简单来说就是允许将子类类型的指针赋给父类类型的指针。写代码的时候呢,把不同的子类当作父类来看,可以屏蔽子类对象之间的差异,写出通用的代码,可以适应需求的不断变化。

接下来看看我随便写的吃饭的练习:

  • main.m

    //创建一人(Person)类,人类有多种身份如:
    //学生(Student)
    //教师(teacher)
    //老板(boss)
    //创建一个餐厅(dining),餐厅点菜行为不分身份,只要是人都可以点菜。
    #import <Foundation/Foundation.h>
    #import "Student.h" 
    #import "Boss.h" 
    #import "Teacher.h" 
    #import "Dining.h" 
    int main() {
        Dining *dining = [Dining new];
        Person *stu = [Student new];
        [dining doOrder: stu];
        Person *tea = [Teacher new];
        [dining doOrder:tea];
        Person *boss = [Boss new];
        [dining doOrder:boss];
        return 0;
    }
  • Dining.h

    #import <Foundation/Foundation.h>
    #import "Student.h" 
    #import "Boss.h" 
    #import "Teacher.h" 
    @interface Dining : NSObject
    
    -(void)doOrder:(Person *)p;
    
    @end
  • Dining.m

    #import "Dining.h" 
    
    @implementation Dining
    -(void)doOrder:(Person *)p
    {
        [p order];
    }
    
    @end
  • Teacher.h

    #import <Foundation/Foundation.h>
    #import "Person.h" 
    @interface Teacher : Person
    -(void)order;
    @end
  • Teacher.m

    #import "Teacher.h" 
    
    @implementation Teacher
    -(void)order
    {
        NSLog(@"老师点菜");
    }
    @end
  • Boos.h

    #import <Foundation/Foundation.h>
    #import "Person.h" 
    @interface Boss : Person
    -(void)order;
    @end
  • Boos.m

    #import "Boss.h" 
    
    @implementation Boss
    -(void)order
    {
        NSLog(@"老板点菜");
    }
    @end
  • Student.h

    #import <Foundation/Foundation.h>
    #import "Person.h" 
    @interface Student : Person
    -(void)order;
    @end
  • Student.m

    #import "Student.h" 
    
    @implementation Student
    -(void)order
    {
        NSLog(@"学生点菜");
    }
    @end
  • Person.h

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    -(void)order;
    @end
  • Person.m

    #import "Person.h" 
    
    @implementation Person
    -(void)order
    {
        NSLog(@"点菜");
    }
    @end


© 著作权归作者所有

上一篇: OC的复合
下一篇: OC的三大特性
粉丝 0
博文 15
码字总数 7681
作品 0
西安
私信 提问
加载中

评论(0)

「Objective-C基础」三大特性:封装、继承、多态

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

无忌不悔
2017/08/08
0
0
Java编程思想 第8章 多态

1、Java语言的三大特性:继承、封装和多态。 继承:复用类的一种方法,可以简省很多代码; 封装:通过合并特征和行为来创建新的数据类型。【这种“数据类型”跟Java本身提供的8大“基本数据类...

木云凌
2016/02/23
51
0
Python——面向对象(初级篇)

1.如何创建类 class 类名: 2.如何创建方法 构造方法: obj = 类名('a1') 普通方法:obj = 类名('xxx')obj.普通方法名() 3.图解面向对象的创建和执行 4.面向对象三大特性之一:封装 '''定义......

osc_8g11urw7
2018/10/22
2
0
OC面向对象的三大特性:封装,继承,多态

以下,将以三个类做为描述这三个特性的事例,人(父类),动物(父类),狗(子类),因有其它的原因,代码只能晚上抽个时间补上。 假设人有两个属性,姓名(name)与年龄(age),行为:饲养(feed);动...

AppleDream
2016/03/28
51
0
Java面向对象之多态(来源于身边的案例)

2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1.4 可以非常标...

osc_db1n5a75
2019/01/03
1
0

没有更多内容

加载失败,请刷新页面

加载更多

PDF如何添加下划线?迅捷PDF编辑器一键添加

“在PDF文件中如何添加下划线?”最近,很多办公室小伙伴都向小编咨询这样一个问题。我们常常需要接触、使用到PDF文件,通过查看、阅读、编辑PDF文件以处理各种各样的学习、工作任务。当我们...

dawda
18分钟前
20
0
go中gin框架+realize实现边写代码边编译,热更新

最近看到了热加载,相关的,就搜索了goland实现热加载 发现了一个插件realize https://github.com/oxequa/realize 然后,为了自己撸代码更方便,配合gin写个教程 1.准备 go get github.com/...

osc_ho8dcqsx
19分钟前
17
0
CAP理论的理解

转自:https://www.cnblogs.com/mingorun/p/11025538.html CAP理论的理解 CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Ava...

osc_5rgbamh9
19分钟前
24
0
求所有科目都大于80分的学生姓名

   蠢蠢的我=》 select t1.name from ( select name,count(*) as num from table t where fenshu>80 group by name) t1join( select name,count(kecheng) as num from table group ......

osc_gk4myeyk
21分钟前
15
0
Memcache(1.1)Memcache 基本概述与架构概述

【1】基本概念介绍 官网:https://memcached.org/ 【1.1】memcache与memcached memcache:是早期使用的,与php结合的,是Php中常用的一个原生插件,完全在php框架内开发的 memcached:是建立...

osc_7ie26pzn
22分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部