Ich habe eine Elternklasse mit einer Eigenschaft erstellt.
Jetzt bin ich inheriting
diese Klasse in meine Kindklasse. Es ist offensichtlich, dass ein Mitglied der Elternklasse Mitglied der Kindklasse wird.
Also, wenn ich den Wert in der untergeordneten Klasse ändern, wird derselbe Variablenwert auch in der übergeordneten Klasse geändert.Kann Verhalten der Vererbung in swift nicht verstehen?
Ich habe unten erwähnten Code verwendet.
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"
Hier Ausgang ist Bye aber es sollte sein Hallo wie ich nicht geordneten Klasse Mitglied Wert zu ändern bin.
Wenn ich mit Instanz SomeClass
Zugriff dann zeigt es Ausgabe als Hallo
Wenig Fragen-
- Ist es Kopie der übergeordneten Klasse Variable in der Kinderklasse oder refrence machen?
- Super bedeutet, ich möchte auf die Variable der Elternklasse zugreifen, dann warum Wert geändert?
EDIT: Wie pro Frankie Antwort Im folgende Szenario, warum es immer noch gibt "Hallo".
class SomeClass {
var avar:String = "Hello"
var bvar:String?
func someFunc() {
self.avar
}
}
class Bclass:SomeClass {
func myFunc() {
self.avar = "Bye"
super.avar
self.avar
}
}
class Cclass:SomeClass {
func myFunc() {
super.avar
self.avar
}
}
let c = Bclass()
c.myFunc()
let d = SomeClass()
d.someFunc()
let e = Cclass()
e.myFunc()
Hinweis: In 'Bclass' beziehen sich' self.avar' und 'super.avar' auf dieselbe Eigenschaft. – rmaddy
aber Super soll auf Wert in der Elternklasse zugreifen, dann warum es den gleichen Wert wie self.It bedeutet, es macht Kopie, weil, wenn ich Wert von Elternklasse direkt ausdrucken dann zeigt es "Hallo" – iOSGuy
'Bclass' erbt' avar' von seinem Elternteil Klasse. Es gibt nur den einen "Avar". – rmaddy