ich den Titel dieser Frage wissen, ist verwirrend, aber das seltsame Verhalten wird im folgenden Beispiel erläutert:In Swift, warum Unterklasse Methode, um die man nicht außer Kraft setzen kann, in übergeordnete Klasse von Protokollerweiterung zur Verfügung gestellt
protocol Protocol {
func method() -> String
}
extension Protocol {
func method() -> String {
return "From Base"
}
}
class SuperClass: Protocol {
}
class SubClass: SuperClass {
func method() -> String {
return "From Class2"
}
}
let c1: Protocol = SuperClass()
c1.method() // "From Base"
let c2: Protocol = SubClass()
c2.method() // "From Base"
Wie kommt c1.method()
und c2.method()
zurück dasselbe? Wie funktioniert die method()
in SubClass nicht?
Interessanterweise ohne die Art der c2 erklärt, dies funktionieren wird:
let c2 = SubClass()
c2.method() // "From Class2"
nette Frage. Ich habe ein ähnliches unter http: // stackoverflow.com/questions/33702738/Methode-Anpassung-in-Unterklasse-nicht-angerufen;). Welches ist möglicherweise ein Duplikat von Ihnen. Es ist so, als ob der dynamische Versand nur funktionieren kann, wenn die SuperClass die Funktion implementiert. – bm842