16:多态的实现

本小节知识点:

  1. 【掌握】如何实现多态
  2. 【了解】多态的原理
  3. 【掌握】多态的注意点

1.如何实现多态

  • Animal是父类,子类有Cat 和 Dog,子类分别重写了父类中的eat方法;实例化对象的时候可以用下面的方法:
Animal *animal = nil;

//实例化猫的对象
animal = [Cat new];
[animal eat];

//实例化狗的对象
animal = [Dog new];
[animal eat];

2.多态的原理

  • 动态绑定:

    • 动态类型能使程序直到执行时才确定对象的真实类型
    • 动态类型绑定能使程序直到执行时才确定要对那个对象调用的方法
  • OC不同于传统程序设计语言,它可以在运行时加入新的数据类型和新的程序模块:动态类型识别,动态绑定,动态加载
  • id类型:通用对象指针类型,弱类型,编译时不进行具体类型检查

3.多态的注意点

  • 1)如果存在多态,父类是可以访问子类特有的方法
假设 子类 Dog 有一个特有的方法bark
[dog bark];
Animal *an2 = [Dog new];
[(Dog*)an2 bark]; //把父类的指针,强制类型转换
  • 2)如果不存在多态,父类是不可以访问子类特有的方法的
Animal *an3 = [Animal new];
[(Dog*)an3 bark]; //错误的,不能强制转换
时间: 2024-08-02 00:01:25

16:多态的实现的相关文章

11_Java面向对象_第11天(接口、多态)

今日内容介绍1.接口2.多态 01接口的概念 * A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的 实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计. 请记住:一切事物均有功能,即一切事物均有接口. 02接口的定义 A: 接口的定义 与定义类的class不同,接口定义时需要使用interface关键字. 定义接口所在的仍为.java文件,虽然声明时使用的为inter

Java必会的基础知识(2)

1. 多态:父类型的引用可以指向子类型的对象.2. Parent p = new Child();当使用多态方式调用方法时,首先检查父类中是否有 sing()方法, 如果没有则编译错误:如果有,再去调用子类的 sing()方法. 3. 一共有两种类型的强制类型转换: a) 向上类型转换( upcast):比如说将 Cat 类型转换为 Animal 类型,即将子类型转换为父类型.对于向上类型转换,不需要显式指定. b) 向下类型转换( downcast):比如将 Animal 类型转换为 Cat

C++基础总结

1. 4 const和#define的区别 对比加深 C++ 中的const 常量类似于宏定义 const int c = 5; ≈ #define c 5 C++ 中的const 常量与宏定义不同 const常量是由编译器处理的,提供类型检查和作用域检查 宏定义由预处理器处理,单纯的文本替换 2. C语言中的const 变量 C语言中 const变量是只读变量,有自己的存储空间 C++中的const 常量 可能分配存储空间,也可能不分配存储空间 当const 常量为全局,并且需要在其它文件中使

JavaSE学习总结第09天_面向对象4

09.01 final关键字引入 例: 1 class Fu 2 { 3 public final void show() 4 { 5 System.out.println("访问底层资源"); 6 } 7 } 8 class Zi extends Fu 9 { 10 public void show() 11 { 12 System.out.println("Zi show run"); 13 } 14 } 15 class Demo 16 { 17 public

java基础知识起步

第一章 将java文件编译成class文件: 在记事本中编辑java代码-----修改文件名为.java文件----打开cmd---进入文件所在文件路径如f:----在命令窗口执行 javac 文件名.java--执行命令:java 文件名 包名小写,类名首字母大写,类名可.java文件名要完全一致,是\n注意不是/ 用javac 文件.java命令编译,后用java  类名 执行形成的Class文件 第二章 标识符的命名规则:(驼峰命名法)变量名,方法名第一个单词小写后面每一个单词首字母大写

Java类的设计----多态性及其应用

多态性及其应用 多态性 多态-在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Student(); Object o = new Person();//Object类型的变量o,指向Person类型的对象 o = new Student(); //Object类型的变量o,指向Student类型的对象 父类类型的变量可以指向子类的对象 一个引用类型变量如果声明为父类的类型,但实际引用的

【全集】大数据Java基础

课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语言Java,为后续大数据课程的学习奠定了坚实的语言基础. 适用人群 1.想学大数据没有语言基础的学员 2.想学大数据没有Java语言基础的学员 3.转行想学大数据的学员 4.了解Java,大数据Java知识体系不完整的学员 课程视频下载地址(视频完整,无加密) 链接:https://pan.baid

便是见到前方那

以可得量力而凌厉刀芒横扫http://weibo.com/2015.09.16/p/1001603887144312655250http://weibo.com/2015.09.16/p/1001603887144321088567http://weibo.com/2015.09.16/p/1001603887144325238274http://weibo.com/2015.09.16/p/1001603887144325282921http://weibo.com/2015.09.16/p/

对于这黑马之会

是想不出究竟还只是区区一角啊http://weibo.com/2015-09.16/p/1001603887574727917787http://weibo.com/2015-09.16/p/1001603887574727946828http://weibo.com/2015-09.16/p/1001603887574732112097http://weibo.com/2015-09.16/p/1001603887574732112103http://weibo.com/2015-09.16/

16 Apr 18 封装的property 多态 鸭子类型 classmethod和staticmethod

16 Apr 18 一.      封装的property BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 成人的BMI数值: 过轻:低于18.5 正常:18.5-23.9 过重:24-27 肥胖:28-32 非常肥胖, 高于32 体质指数(BMI)=体重(kg)÷身高^2(m) 首先需要明确.bmi是算出来的,不是一个固定死的值,也就说我们必须编写一个功能,每次调用该功能都会立即计算一个值,但很明显人的bmi值听起来更像一个名词而非