0
我是學下面的章節中的斯威夫特編程語言:斯威夫特繼承v.s調用超級
如果你的子類沒有定義任何指定的初始化程序,它會自動繼承其所有的超指定初始化的。
然後我在目標試過這些代碼:
class Car {
var name: String = "Unknown"
init(name: String) {
self.name = name
}
}
class RacingCar: Car {
var speed = 0.0
init(name: String, speed: Double) {
self.speed = speed
super.init(name: name)//this is where I got confused
}
}
根據規則之一,RacingCar類將不繼承自其超汽車在init(名稱:)指定的初始化。不過,我仍然可以在我的子類中調用super.init(name :)。這怎麼會發生?我對此很困惑。誰能解釋爲什麼?謝謝。
謝謝您的幫助。這是有道理的,但我仍然有一個問題。在超類中定義的所有方法和屬性可用於子?@NicolasMiari – Evan
是的,除非它們被聲明爲'private'。但即便如此,他們如果兩個超和子類在同一個文件中定義仍然可用(以快捷,訪問控制是源文件爲基礎的) –
有關於特殊規則** **初始化(就像你在你的問題提) ,但其他方法會自動繼承。 –