[Swift5] Initialization 2
Initialization
クラス継承と初期化
クラス継承のすべての構成を含むすべてのクラスストレージ構成は、初期化によって初期値を割り当てる必要があります.クラスタイプを初期化して、すべてのストレージ・プロシージャが初期値を受け入れるようにするには、2つの方法があります.指定された頭文字ライター(designated initializers
)と便利な頭文字ライター(convenience initializers
)です.
指定した頭文字Riserと便利な頭文字Riser
大文字の構文
指定した頭文字Riser構文は次のとおりです.
init(parameters) {
statements
}
init
キーワードの前にconvenience
キーワードを付けると便利な頭文字になります.convenience init(parameters) {
statements
}
クラスヘッダ表記規則
iニクソン遅延を呼び出すには3つのルールがあります.
2つのステップを初期化
クラスの初期化には2つの段階があります.
初期化手順1
クラスクリップまたは便利な頭文字Riserを呼び出すと、新しいインスタンスにメモリが割り当てられます.メモリが初期化されていません.
指定した頭文字ライフサイクルを使用すると、ストレージ・プロシージャの値が割り当てられます(メモリが初期化されます).指定したイニシャル・ログイン・プログラムは、親イニシャル・ログイン・プログラムを呼び出し、上位ストレージ・プログラムに対して同じ操作を実行します.すなわち、最初に指定したアルファベットタグを呼び出すクラスは、継承されたクラスでも独自のpropertyでも、すべてのpropertyを初期化します.
ステップ2初期化
指定した頭文字ログインでインスタンスをカスタマイズできます.すなわち、property値を変更したり、インスタンスメソッドを呼び出したりするには、頭文字タグで自分を参照することができます.便利な頭文字アイラインペンもカスタマイズに使用されます.第2段階初期化で使用される頭文字の順序は(上位親の指定頭文字の順序→...→現在のクラスの指定頭文字の順序→現在のクラスの便利な頭文字の順序)である.
イニシャルタグの継承と上書き
sweeftのサブクラスは、親クラスの頭文字liserを自動的に継承しません.親レベルの頭文字が安全で適切な場合にのみ継承されます.親の頭文字lighterをoverlightingで継承します.注意、オートオーバーシュート時にもキーワードを使います.
子クラスが親クラスの便利な頭文字タグを呼び出す場合は、子クラスを間接的に呼び出す必要がありますが、上書きキーは作成されません.
class Vehicle {
var numberOfWheels = 0
var description: String {
return "\(numberOfWheels) wheel(s)"
}
}
let vehicle = Vehicle()
print("Vehicle: \(vehicle.description)")
// Vehicle: 0 wheel(s)
The next example defines a subclass of Vehicle called Bicycle:
class Bicycle: Vehicle {
override init() {
super.init()
numberOfWheels = 2
}
}
let bicycle = Bicycle()
print("Bicycle: \(bicycle.description)")
// Bicycle: 2 wheel(s)
class Hoverboard: Vehicle {
var color: String
init(color: String) {
self.color = color
// super.init() implicitly called here
}
override var description: String {
return "\(super.description) in a beautiful \(color)"
}
}
An instance of Hoverboard uses the default number of wheels supplied by the Vehicle initializer.
let hoverboard = Hoverboard(color: "silver")
print("Hoverboard: \(hoverboard.description)")
// Hoverboard: 0 wheel(s) in a beautiful silver
Vehicle
レベルではカスタムの頭文字Riserはありませんので、デフォルトの頭文字Liserを使用します.Bicycle
クラスはVehicle
クラスを継承するサブクラスで、Custom頭文字Liserを使用します.super
を通過し、残りはそのまま持っていった.Hoverboard
はcustom頭文字liserを用いながらoverridingも行われた.super.init()
が自動的に使用されています.サブクラスは、継承された変数プロファイルを置き換えることができますが、定数プロファイルを置き換えることはできません.
Reference
この問題について([Swift5] Initialization 2), 我々は、より多くの情報をここで見つけました https://velog.io/@j_aion/Swift5-Initialization-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol