文档章节

OC三大特性之一:多态

 蒲公英6_6守候
发布于 2015/10/12 22:57
字数 317
阅读 14
收藏 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
西安
私信 提问
「Objective-C基础」三大特性:封装、继承、多态

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

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

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

木云凌
2016/02/23
33
0
OC面向对象的三大特性:封装,继承,多态

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

AppleDream
2016/03/28
34
0
OC学习篇之---代理模式

在前一篇文章我们介绍了OC中的协议的概念:http://blog.csdn.net/jiangwei0910410003/article/details/41776015,这篇文章我们就来介绍一下OC中的代理模式,关于代理模式,如果还有同学不太清...

jiangwei0910410003
2014/12/06
0
0
OC 继承和类方法

首先来介绍下类方法 我们在之前声明类的方法时是这样的 之后我们要先生成一个对象,然后才能调用到这个方法 但是类方法不同,首先类方法的开头不是减号,而是加号。 其次类方法不用生成对象,...

JoshSone
2016/08/31
1
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部