0
計算された変数は、setter
とgetter
の両方で使用できます。私は次のコードを試してこの結論を得ました。私は100%正しいとは思わない。私が間違っているなら、私を修正してください。ありがとう!計算された変数は、setterとgetterの両方でスーパークラスの格納されたプロパティをオーバーライドするためにのみ使用できます。
class SuperClass {
var ID = 2202
}
//Wrong
class SubClass: SuperClass {
override var ID = 2203
}
//worng
class SubClass: SuperClass {
override var ID: Int {
return super.ID + 1
}
}
//Correct
class SubClass: SuperClass {
override var ID: Int {
get {
return super.ID + 1
}
set {
}
}
}
あなたのスーパークラスは、それのオブジェクトが_mutable_プロパティ 'ID'が含まれていることを述べています。 suberclassオブジェクトはサブクラスオブジェクトと互換性があるので、サブクラスオブジェクトは_mutable_であるプロパティIDを含んでいなければなりません(上記の例のように "ダミー"セッターを使用しても実際には値を変更しません)。これは、サブクラスオブジェクトを例えばに渡そうとすると明らかです。 'func foo(bar:SuperClass){bar.ID = 42}';サブクラスがゲッターだけで 'ID'をオーバーライドすることが許されるならば、そのようなオブジェクトで' foo(...) 'を呼び出すことはあまり意味がありません。 – dfri
...次のQ&Aも参照してください。s:[Swiftのストアドプロパティをオーバーライドする](http://stackoverflow.com/questions/26691935/overriding-a-stored-property-in-swift)、[superclassプロパティをオーバーライドするSwiftの異なるタイプで](http://stackoverflow.com/questions/24094158/overriding-superclass-property-with-different-type-in-swift) – dfri