定义
多态:不同对象以自己的方式响应相同的消息的能力叫做多态。
生活中:
人可以指教师、学生、医生等等。
程序中:
父类指针指向子类对象。
好处
多态的主要好处就是简化了编程接口。它容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分开来。
注意
1.没有继承就没有多态。
2.父类类型的变量, 不能直接调用子类特有的方法。
3.OC支持方法名的多态,但不支持参数和操作符的多态。
实现
首先创建父类 People 和 子类 Student,然后在 People 父类中添加属性和方法,并分别在两个类中实现该方法。
调用代码如下:
// 用父类People指针指向子类Student对象
People *p = [[Student alloc] init];
// 此时,p 对象就已经是一个 Student 对象
// 下面的属性与方法在父类中需要声明,才能用父类指针直接调用
// 如果父类不存在,则需要强制将类型转为 Student 才可以使用
p.name = @"小明";
p.mathScore = 66;
p.englishScore = 88;
// 只调用了 Student 类中的实现,并没有调用 People 类中的实现,也证明了多态的实现。
[p calculateAverageScore];