1つのプロパティを持つ親クラスを作成しました。
今、私はinheriting
このクラスを私の子供クラスに入れています。親クラスのメンバーが子クラスのメンバーになることは明らかです。
したがって、子クラスの値を変更すると、同じ変数値も親クラスで変更されています。迅速な継承の動作を理解できませんか?
私は以下のコードを使用しました。
class SomeClass {
var avar:String = "Hello"
var bvar:String?
func someFunc() {
}
}
class Bclass:SomeClass {
func myFunc() {
self.avar = "Bye"
super.avar
}
}
let c = Bclass()
c.myFunc() // "Bye"
let d = SomeClass()
d.someFunc() // "Hello"
ここで、出力はバイバイですが、私は親クラスメンバーの値を変更していないよと、それは、こんにちはでなければなりません。
私はSomeClass
のインスタンスにアクセスし、それを示して、それは子クラスまたはrefrenceに親クラス変数のコピーを作成していこんにちは
少数questions-
- として出力?
- スーパーは、親クラスの変数にアクセスしたいのですが、なぜ値が変更されたのですか?
EDIT:以下のシナリオではフランキーの答え 1として、なぜそれまだ版画「こんにちは」。
ヒント: 'Bclass'では、' self.avar'と 'super.avar'は同じプロパティへの参照です。 – rmaddy
親クラスの値にアクセスすることになっているスーパーは、なぜselfと同じ値を出力するのでしょうか?親クラスからの値を直接出力すると "hello"を表示するのでcopyを意味します – iOSGuy
'Bclass'は親から' avar'クラス。 1つだけ 'avar'があります。 – rmaddy