草庐IT

swift - 覆盖子子类中的协议(protocol)默认实现不参与动态调度

考虑以下Playground:protocolA{funcf()->String}extensionA{funcf()->String{return"AAAA"}}classB:A{}classC:B{funcf()->String{return"CCCC"}}leta:A=C()letb:B=C()letc:C=C()a.f()//"AAAA"-why?b.f()//"AAAA"-why?c.f()//"CCCC"我不明白为什么a.f()和b.f()返回"AAAA"-他们应该返回“CCCC”因为funcf()->String应该被动态调度(正如它在协议(protocol)中声明的那样

generics - Kotlin:覆盖子类型中的通用属性

我尝试编写一些通用代码,但无法摆脱Typeof'PROPERTY'isnotasubtypeoftheoverriddenproperty错误。我的代码的简化版:abstractclassBaseP{varview:V?=null}abstractclassBaseF{funsmth(){pp.view=this}abstractvalpp:BaseP}abstractclassSubF:BaseF(){abstractoverridevalpp:BaseP//Error:(20,30)Typeof'pp'isnotasubtypeoftheoverriddenproperty'pub
12