OC特有語法 多型

2021-07-04 04:31:48 字數 551 閱讀 9540

多型:指標以父類型別宣告,但實際執行時指向的是其某個子類的物件,當用這個指標呼叫方法時,會根據其指向的不同子類物件呼叫不同的物件方法。這種現象叫多型。

多型的前提是子類會覆蓋父類的方法。

多型的應用:

需要乙個新的函式專門用來餵狗

void feed(dog *d)

如果這個時候也需要喂貓,那就應該重寫新乙個新的函式

void feed(cat *c)

而狗和貓實際上都繼承自動物這個類,在這裡就可以使用多型來簡化**了。

這裡只需要把函式的引數寫成是animal *

型別的,那麼

dog和

cat型別的物件就都可以傳入進來。

呼叫的時候直接改變引數就可以了。

使用多型需要注意的地方:

指標變數在編譯階段只能呼叫其編譯時型別所具有的方法,執行時則執行它執行時型別所具有的方法。

所以父類指標呼叫子類特有方法時編譯報錯。

解決辦法:

1.用泛型:id d=a;

2.強制型別轉換:dog *d=(dog *)a;

OC 特有語法1

asp.net unity開發 net培訓 期待與您交流!一 利用點語法替換set方法和get方法 1.方法呼叫 student stu student new stu setage 10 int age stu age 這是set和get的物件呼叫方法 2 點語法 stu.age 10 int a...

OC特有語法 SEL

sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法。在記憶體中每個類的方法都儲存在類物件中,每個方法都有乙個與之對應的sel型別的資料,根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法。inte ce person nsobject void t...

OC特有語法 Block

block 與函式指標的比較 有點像函式指標,可以作為引數傳遞,作為函式返回值 函式指標 void mypoint test 指向函式的指標。儲存函式名代表的指標變數 mypoint block 彌補了指向函式的指標不能夠直接儲存乙個函式體 void myblock 1 定義block變數 int ...