class A {
}
class R {
let foo: A
init(foo: A) {
self.foo = foo
}
func printIt() {
print(self.foo)
}
}
class AA: A {
}
class RR: R {
let foo: AA
init(foo: AA) {
self.foo = foo
super.init(foo: foo)
}
}
Если я пытаюсь написать приведенный выше код, компилятор Swift выдаст мне ошибку Cannot override with a stored property 'foo'
, но если я сделаю foo private
class A {
}
class R {
private let foo: A
init(foo: A) {
self.foo = foo
}
func printIt() {
print(self.foo)
}
}
class AA: A {
}
class RR: R {
private let foo: AA
init(foo: AA) {
self.foo = foo
super.init(foo: foo)
}
}
Компилятор Swift не выдаст ошибкуи прекрасно компилируется без ошибок. Также я не обязан использовать ключевое слово override
здесь, и если я это сделаю, компилятор Swift выдает и выдает ошибку, говорящую Property does not override any property from its superclass
.
Может ли кто-нибудь подробно объяснить, как наследование и переопределение работает в Swift, и является ли это чем-тоОсобый случай частной собственности?