热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

OC学习笔记之多态

什么是多态考虑一个问题:父类能否访问子类的方法多态就是某一类事物的多种形态。在程序中的多态:不同对象以自己的方式,响应相同名称方法的能力称为多态(不同的对象以自己的方式相应父类
什么是多态
    考虑一个问题:父类能否访问子类的方法
    多态就是某一类事物的多种形态。在程序中的多态:不同对象以自己的方式,响应相同名称方法的能力
    称为多态(不同的对象以自己的方式相应父类同名的方法,这就是多天)


多态的条件
   1.有继承关系
   2.有方法重写//子类把父类的同名方法重写
   //代码体现:用父类的类型的指针指向子类对象,这就是多态
   Dog *g = [Dog new];
   Animal *a = [Dog new];//多态
       
多态的优点
   简化编程接口。他允许在类和类之间重用一些习惯性的命名。而不用为每一个新家的函数明明一个新的名字。
   这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类区别开来。多态也使得代码可以分散在不
   同的对象中而不用试图在一个函数中考虑到所有可能的对象。这样使得您的代码扩展性和复用性更好一些。
   当一个新的情景出现的是后,您无需对现有的代码进行改动,而只需要增加一个新的类和新的同名方法。



多态的实现
  1.子类继承父类
  2.子类重写父类的方法
  3.父类指针指向子类对象
     Dog *g = [Dog new];
     Animal *a = [Dog new];//多态
     [a run];
     run方法被Dog重写过,所以运行的Dog中的run.


多态的原理
    程序直到运行的时候,才知道执行时才确定对象所有的类型。
    动态类型的绑定使程序直到执行时才确定要对对象调用的实际的方法
    OC不同于传统的程序设计语言, 他可以运行时加入新的数据类型和新的程序模块:动态类型
         识别,动态绑定,动态加载
    id类型:通用指针类型,弱类型,编译时不进行检查。




多态的注意点
   1.父类可以调用子类的方法,并且该方法不存在于父类
      Animal *a = [Dog new];
      [a eat];//这样写的话,无法执行,因为Animal的.m文件中并没有eat方法


      Animal *a = [Dog new];
      [(Dog *)a eat];//这样就OK了,进行了一次强制转换


      Animal a = [Animal new];
      [(Dog *)a8 eat];//这样强制转换不可行,程序编译时没有错误,但是运行的时候,会报错
推荐阅读
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
author-avatar
电信他爹_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有