Objective-C中的多态性和默认实现

use*_*300 0 oop polymorphism objective-c

基本上我有一个Parent超类,即被称为MAMMAL.哺乳动物默认扩展UIImageview.现在我有虎类,它反过来扩展了MAMMAL类,而哺乳动物类也就是母乳喂养方法.

在我的哺乳动物课上,我宣布使用breastfeedbaby方法.

现在,我希望能够做一些事情,比如添加一个动物列表,这些动物可以扩展哺乳动物,并拥有自己的母乳喂养实施,循环播放和阵列,然后施放给哺乳动物并做[哺乳动物的母乳喂养宝宝].

我希望每只动物都可以使用自己的母乳喂养方法,因为它们都覆盖了它,但我的问题是它会从哺乳动物身上调用母乳喂养.如果我在那里宣布它.

在java中,我可以使用接口,也可以只使用抽象方法的抽象类,并使用不同的实现覆盖该方法.

那有意义吗?我的问题是,如果我不在哺乳动物中省略哺乳宝宝的方法,那么它将在哺乳动物中称为哺乳宝宝方法.如果我在哺乳动物中省略了母乳喂养方法.该课程将是黄色,警告说我没有正确实现mammal.h类.如果我这样做,就会调用动物的母乳喂养方法.我应该在这里使用协议,但据我所知,协议与java中的接口不同.

我不知道它是否有意义,但无论如何都要感谢.

jv4*_*v42 5

以下场景:

  • Mammal.h: - (void)method;
  • Mammal.m: - (void)method { NSLog(@"Mammal"); }
  • Monkey.h: @class Monkey : Mammal
  • Monkey.m: - (void)method { [super method]; NSLog(@"Monkey"); }
  • Somewhere.m: Mammal *monkey = [[Monkey alloc] init]; [monkey method];

应该产量:

哺乳动物

更新:当然,[super method]如果您愿意,可以删除电话.只是展示了可能性.