一、多态的条件:函数
有继承关系,有方法重写设计
父类的声明变量指向子类对象指针
二、多态的优势:对象
简化变成接口,容许类与类之间重用习惯性的明明继承
能够分散在不一样的对象中,不用试图在一个函数中考虑全部的对象接口
三、多态的原理:编译
动态绑定:程序设计
动态类型能使程序直到执行时才肯定对象所属类型变量
动态类型绑定能使程序执行时才肯定要对对象调用的实际方法原理
OC不一样于传统程序设计语言,它能够在运行时加入新的数据类型和心的程序模块:动态类型识别、动态绑定、动态加载
id类型:经过指针类型,弱类型,编译时不进行类型检查
四、多态的注意点
[(Cat *)c1 jump];//当父类非要用子类特有的类型时 强制类型转化
一、若是存在多态,父类是能够访问子类特有的方法的
二、若是不存在多态,父类是不能够访问子类特有的方法的
练习:
上帝杀教师/学生/医生
上帝杀人(人 用 Person 编译是person 运行执行其真正的方法)