A.对象的多种形态

1.父类指针指向子类对象

2.调用方法的时候,会动态监测真实地对象的方法
3.没有继承,就没有多态
4.好处:用一个父类指针可以指向不同的子类对象
5.强制转换类型之后就能使用子类特有的方法,否则会出现warning(仍可以正常运行,即不论指针类型,只要对象存在实际方法就可以运行)
 1  2 #import <Foundation/Foundation.h>3 4 @interface Animal : NSObject5 - (void) eat;6 @end7 8 @interface Dog : Animal9 - (void) run;
10 @end
11
12 @interface Cat : Animal
13
14 @end
15
16
17 @implementation Animal
18 - (void) eat
19 {
20     NSLog(@"吃东西---");
21 }
22
23 @end
24
25 @implementation Dog
26 - (void) eat
27 {
28     NSLog(@"狗狗吃东西");
29 }
30
31 - (void) run
32 {
33     NSLog(@"狗狗跑起来了");
34 }
35 @end
36
37 @implementation Cat
38
39 - (void) eat
40 {
41     NSLog(@"猫猫吃东西");
42 }
43
44 @end
45
46 void feed(Animal *animal)
47 {
48     NSLog(@"开始喂动物");
49     [animal eat];
50 }
51
52
53 int main()
54 {
55     Animal *a = [Dog new];
56     [a eat];
57     Animal *c = [Cat new];
58     [c eat];
59
60     feed(a);
61     feed(c);
62
63     Dog *dog = (Dog *)a;
64     [dog run];
65
66     return 0;
67 }

转载于:https://www.cnblogs.com/wvqusrtg/p/4501508.html

[Objective-c 基础 - 2.4] 多态相关推荐

  1. C++基础教程之多态

    标题:C++基础教程之多态 关键词:C++多态,C++基础,C++教程 描述:多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. C++ 多态 多态按字面的 ...

  2. Objective C 基础教程

    复合 使用复合可组合多个对象,使之人工协作. 会同时使用继和复合来创建自己的类. 编程中的复合就好像音乐中的作曲一样:将多个组件组合在一起配合使用. 在Objective-C中,复合是通过包含作为实例 ...

  3. Android基础之Java多态、继承、重载和重写的区别

    [免费]全网独家:这是一份非常值得珍藏的Android知识体系!!! 一.继承(inheritance) 1.1 继承是什么 简而言之,继承就是在现有类的基础上,增加新的方法或者重写基类的方法的一种方 ...

  4. Python基础 ( 十 ) —— 面向对象(多态、封装、反射、动态导入)

    #面向对象的三大特性 1 继承(上一章的内容) 2 多态 python本身就是多态的 3 封装 # 多态 #不同类的实例化对象,调用同一个方法(执行的逻辑不同),而不用考虑他们具体的类,例如: 字符对 ...

  5. C++基础继承和多态(水上飞机)

    1.继承和多态基础知识 菱形继承需要用vitual关键字防止内存的重复使用,多态主要有静态多态和动态多态. 静态多态主要是在调用过程中函数的重载,在编译阶段前就确定函数地址. 动态多态实在运行阶段才确 ...

  6. 1023day5:class类属性方法、每次执行类属性+1、内建模块、时间装饰器wrapper、面向对象__slots__方法:限制类的属性等基础知识、正则表达式基础知识、多态鸭子类型

    文章目录 一.类class 1.Python类class 属性 方法 2.类的构造方法__init__() 3.每次执行一次类的属性+1 二.模块 1.内建模块 2.第三方模块 3.定义自己的模块 三 ...

  7. Python基础——继承、多态

    文章目录 一.slots 二.私有属性和私有方法 三.继承 1.私有属性.私有方法 2.继承的特点(多层继承) 3.新式类和经典类 四.方法的重写 五.多态 一.slots __slots__属性对应 ...

  8. java继承和多态_Java基础继承与多态

    Java基础第九天 继承概述 引入 首先我来写两个代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15//定义学生类 class Student { public void  ...

  9. python基础教程:多态、多继承、函数重写、迭代器详细教程

    用于类的函数 issubclass(cls,class_or_tuple) 判断一个类是否继承自其他的类,如果此类cls是class或tuole中的一个派生(子类)则返回True,否则返回False ...

  10. Objective - C基础: 第一天 - 1. 第1, 2个OC程序

    前言 前面我们已经讲完了C语言的基础,  终于进入到Objevtive - C啦, 这里我们简称为OC, OC是什么? 简单来讲, 它是一门基于C语言演变而来的一门面向对象的语言, 在C语言上添加了属 ...

最新文章

  1. 2022-2028年中国高粘保护膜行业市场专项调研及发展趋势分析报告
  2. 【Scala-spark.mlib】通过Maven工程导入Mlib库
  3. 专家点评Science:中英合作揭示拟南芥三萜化合物特异调控根系微生物组
  4. 【机器学习】集成学习之stacking
  5. java爬取网页数据_如何使用爬虫工具采集数据
  6. csh shell_一篇文章从了解到入门shell
  7. oracle学习小结3之索引
  8. 4999元起!华为Mate 40今日开启预售:搭载麒麟9000E
  9. 量江湖获数千万元B轮融资,提出人工智能ASM投放解决方案
  10. Keil5(C51,MDK)注册详细教程(2032年版本)
  11. CDN是什么?CDN的工作原理?使用CDN有什么优势?
  12. NC65新增按钮、新增按钮拦截器,某个字段制作超链接
  13. java 权重_java实现权重的简单算法
  14. word转pdf组合的图片出现灰线,如何处理
  15. python转换excel 列号 为数字 数字转为列号
  16. R语言:SVD分解求解线性方程组AX=b
  17. 萨姆·阿尔特曼:如何获得成功(How To Be Successful)译文
  18. strtus1 html5,struts1.x的入门级学习教程
  19. Maxima 矩阵及矢量运算 1
  20. Docker_03_彻底搞懂Dockerfile文件

热门文章

  1. 只能在栈上或者堆上创建对象
  2. 第二十一章流 14临时文件
  3. Alpha Blending a Bitmap 失败 原因
  4. Docker 环境的快速搭建
  5. mysql只能查询出1000条数据_MySQL SELECT语句中只能输出1000行数据的原因
  6. tableau双折线图_Tableau可视化之多变条形图
  7. 用户登陆_「python学习笔记」用户登陆需求实现(for/if/str知识点)
  8. win7台式电脑怎么连wifi_修改WiFi密码后电脑连不上网如何解决 修改WiFi密码后电脑连不上网解决方法【详解】...
  9. Jupiter黑客松——IPFS开发者大赛火热报名中!
  10. 云原生,开发者的黄金时代