多态的概念和用法

1、多态的条件:

有继承关系,有方法重写

父类的声明变量指向子类对象

2、多态的优点:

简化变成接口,允许类与类之间重用习惯性的明明

  可以分散在不同的对象中,不用试图在一个函数中考虑所有的对象

3、多态的原理:

  动态绑定:

    动态类型能使程序直到执行时才确定对象所属类型

    动态类型绑定能使程序执行时才确定要对对象调用的实际方法

    OC不同于传统程序设计语言,它可以在运行时加入新的数据类型和心的程序模块:动态类型识别、动态绑定、动态加载

    id类型:通过指针类型,弱类型,编译时不进行类型检查

4、多态的注意点

[(Cat *)c1 jump];//当父类非要用子类特有的类型时 强制类型转化

1、如果存在多态,父类是可以访问子类特有的方法的

2、如果不存在多态,父类是不可以访问子类特有的方法的

练习:

上帝杀教师/学生/医生

上帝杀人(人 用 Person 编译是person 运行执行其真正的方法)

时间: 2024-10-13 16:01:41

多态的概念和用法的相关文章

黑马程序员-----多态的概念和条件

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲  多态的介绍 本小节知识点: 1.[了解]什么是多态? 2.[掌握]多态的条件 3.[了解]多态的优点 提出一个问题: 大家来根据现在学习的知识,思考一个问题:父类能否访问子类方法? 1.什么是多态? 什么是多态:多态就是某一类事物的

OC学习篇之---协议的概念和用法

这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的. 协议就是定义了一组方法,然后让其他类去实现 下面来看代码: WithProtocol.h [objc] vi

PLSQL_Material View物化视图的基本概念和用法(概念)

2014-06-08 BaoXinjian 1. 用法 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据,也可以称为快照.对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的. 如果你想修改本地副本,必须用高级复制的功能.当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取. 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图. 实现两个数据库之间的数据同步,可以存在时

深入理解正则表达式环视的概念与用法

在<深入理解正则表达式高级教程-环视>中已经对环视做了简单的介绍,但是,可能还有一些读者比较迷惑,今天特意以专题的形式,深入探讨一下正则表达式的环视的概念与用法. 深入理解正则表达式环视的概念与用法 一.环视的概念 (一)环视概念与匹配过程示例 示例一:简单环视匹配过程 (二)什么是消耗正则的匹配字符? 示例二:一次匹配消耗匹配字符匹配过程 示例三:多次匹配消耗匹配字符匹配过程 二.环视的类型 (一)肯定和否定 (二)顺序和逆序 · 两种类型名称组合 · 四种组合的用法 四种组合正则与环视的摆

GIT基本概念和用法总结【转】

在日常使用GIT过程中,经常会出错,比如无意间丢失了未提交的数据,回退版本时丢失了工作目录,等等.经过思考发现,所有这些错误都是因为对GIT中一些基本的概念模糊而导致,因为对一些基本概念不清晰,导致对GIT每一条命令将会产生的结果不符合预期.下面我就梳理以下我经常碰到的问题相关的基本概念. 1. Working Directory(工作目录) Git的工作目录是保存当前正在工作的文件所在的目录,和working tree是相同的意思.在这个目录中的文件可能会在切换branch时被GIT删除或者替

第49课 多态的概念和意义

1. 函数重写回顾 (1)父类中被重写的函数依然会继承给子类 (2)子类中重写的函数将覆盖父类中的函数 (3)通过作用域分辨符(::)可以访问到父类中的函数 Child c; Parent* p = &c; c.Parent::print(); //从父类中继承 c.print(); //在子类中重写 p->print(); //父类中定义 2. 面向对象中期望的行为 (1)根据实际的对象类型判断如何调用重写函数 (2)父类指针(引用) ①指向父类对象时,则调用父类中定义的函数 ②指向子类对

(转载)OC学习篇之---协议的概念和用法

在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的. 协议就是定义了一组方法,然后让其他类去实现. 下面来看代码: Wit

OC中协议的概念以及用法

OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的.协议就是定义了一组方法,然后让其他类去实现 下面来看代码:WithProtocol.h[objc]  view plaincopy 

Report_报表中Ref Cursor数据源的概念和用法(案例)

2014-06-22 BaoXinjian 一.摘要 在Report Builder中,有两种数据源取法,一种是基于SQL的,另外一种就是基于Ref Cursor的写法 Ref Cursor在Report Builder 中主要用于一些公用的查询会使用到 比如有多个Report可能会用到同一段SQL或者类似SQL,一般会将这个SQL独立出来作为Ref Cursor放在Package中 当Report调用时,就可以通过调用package中的ref cursor实现查询,而不是讲这段SQL每个rep