1、多态的条件:

有继承关系,有方法重写

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

 

2、多态的优点:

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

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

 

3、多态的原理:

  动态绑定:

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

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

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

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

4、多态的注意点

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

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

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

 

练习:

上帝杀教师/学生/医生

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