[解決済み】Swiftのクラスでエラー。super.initの呼び出しでプロパティが初期化されていない
2022-04-04 14:47:55
質問
2つのクラスがあります。
Shape
と
Square
class Shape {
var numberOfSides = 0
var name: String
init(name:String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides."
}
}
class Square: Shape {
var sideLength: Double
init(sideLength:Double, name:String) {
super.init(name:name) // Error here
self.sideLength = sideLength
numberOfSides = 4
}
func area () -> Double {
return sideLength * sideLength
}
}
上記のような実装では、エラーが発生します。
property 'self.sideLength' not initialized at super.init call
super.init(name:name)
なぜ
self.sideLength
を呼び出す前に
super.init
?
解決方法は?
The Swift Programming Languageから引用すると、あなたの質問に答えています。
<ブロッククオート「Swiftのコンパイラは4つの有用な安全性チェックを行い 二相の初期化がエラーなく完了すること"
安全性チェック1 「指定イニシャライザーは、すべての 「そのクラスが導入するプロパティが初期化される前に は、スーパークラスのイニシャライザーに委ねます。"
からの抜粋です。アップル株式会社 "The Swift Programming Language." iBooks. https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン