私はこれらの2つのSWIFTのクラスがあります。これはちょうど、クラスの「getメソッドのための「宣言をオーバーライドすると、 『オーバーライド』キーワードが必要です」エラーを発生させるコンパイルしようとスウィフトオーバーライド静的メソッドのコンパイルエラー
class A {
static func list(completion: (_ result:[A]?) -> Void) {
completion (nil)
}
static func get(completion: (_ result:A?) -> Void) {
completion (nil)
}
}
class B: A {
static func list(completion: (_ result:[B]?) -> Void) {
completion (nil)
}
static func get(completion: (_ result:B?) -> Void) {
completion (nil)
}
}
をB. 'list'メソッドはうまくコンパイルされます。 [B]の違いは何ですか? B?この場合のコンパイラのために?
編集: '上書き'を追加することはできません。 「静的メソッドをオーバーライドできません」というエラーが表示されます。
ありがとう@Sweeper。なぜ、getメソッドで同じ理由ではないのですか? B.getはB型の彫像を取る?タイプAのA.get? – dce
ああ、私はそれを説明するのを忘れてしまった!基本的には、「このメソッドが別のメソッドをオーバーライドするかどうか」アルゴリズムが実装されている方法です。アルゴリズムでは、配列は互換性のない型であると考えていますが、サブクラスとスーパークラスは互換性のある型@dce – Sweeper