定義
多態(tài):不同對象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)。
生活中:
人可以指教師、學(xué)生、醫(yī)生等等。
程序中:
父類指針指向子類對象。
好處
多態(tài)的主要好處就是簡化了編程接口。它容許在類和類之間重用一些習(xí)慣性的命名,而不用為每一個(gè)新加的函數(shù)命名一個(gè)新名字。這樣,編程接口就是一些抽象的行為的集合,從而和實(shí)現(xiàn)接口的類的區(qū)分開來。
注意
1.沒有繼承就沒有多態(tài)。
2.父類類型的變量, 不能直接調(diào)用子類特有的方法。
3.OC支持方法名的多態(tài),但不支持參數(shù)和操作符的多態(tài)。
實(shí)現(xiàn)
首先創(chuàng)建父類 People 和 子類 Student,然后在 People 父類中添加屬性和方法,并分別在兩個(gè)類中實(shí)現(xiàn)該方法。
調(diào)用代碼如下:
// 用父類People指針指向子類Student對象
People *p = [[Student alloc] init];
// 此時(shí),p 對象就已經(jīng)是一個(gè) Student 對象
// 下面的屬性與方法在父類中需要聲明,才能用父類指針直接調(diào)用
// 如果父類不存在,則需要強(qiáng)制將類型轉(zhuǎn)為 Student 才可以使用
p.name = @"小明";
p.mathScore = 66;
p.englishScore = 88;
// 只調(diào)用了 Student 類中的實(shí)現(xiàn),并沒有調(diào)用 People 類中的實(shí)現(xiàn),也證明了多態(tài)的實(shí)現(xiàn)。
[p calculateAverageScore];