Ich war gerade in swift mit Vererbung einige Experimente zu tun, und das ist mein Code:Eltern-Kind-Beziehung Verwirrung mit Bezug Semantik (swift)
class parent {
var value: Int?
}
class child1: parent {
func setParent() {
value? = 213
}
}
class child2: parent {
func setParent(){
value? = 234
}
}
let a = child1()
let b = child2()
a.setParent()
print(b.value) //nil
print(a.value) //nil
Ich habe Setup eine parent
Klasse, die nur einen Wert Eigenschaft hat, und ich habe eine child1
und child2
, die von parent
erbt.
Unter der Referenzsemantik, wenn ich die value
Eigenschaft auf einen Wert (213) gesetzt ist, wenn ich den Wert unter child2
gehen zu überprüfen, sollte ich den gleichen Wert, weil child1
und child2
beide erbt von parent
, zeigte auf dem parent
Klasse. Aber es stellt sich heraus, dass, wenn ich die Werte drucke, beide null sind ... kann jemand das erklären?
Danke!
Vollständig nicht verwandt, würde ich vorschlagen, Standardnamenskonventionen zu folgen, wobei die Klassen 'Child1',' Child2' und 'Parent' mit Großbuchstaben beginnen sollten. Es macht Ihren Code weniger verwirrend. Variablen und Methoden sollten mit Kleinbuchstaben beginnen, aber Klassen, Strukturen, Protokolle usw. sollten mit Großbuchstaben beginnen. – Rob