出来事を綴っていきます。この広告は、90日以上更新していないブログに表示しています。クラス)Swift前回に続き、詳解Swiftの写経を続ける。全項目イニシャライザを使えない(カプセル化の思想と相性悪)。新しいインスタンス変数。他のイニシャライザ(この例だと直上のイニシャライザ)に処理を委譲する場合に使う。標準出力を可能にする。これを除くと書いてることは結構シンプル。B()print(b)こんな感じ。クラスのイニシャライザSwiftでは、ベースクラスを継承して作られているクラスのインスタンスを正しくつくるために、イニシャライザにはいくつかのルールがある。いうキーワードを付けるどのクラスも指定イニシャライザを最低1つは備えている必要がある。インスタンスのイニシャライズの概念これは↓の画像を見るのが一番理解が早い。簡易イニシャライザ指定イニシャライザスーパークラスの指定イニシャライザ...という順序でイニシャライズされる。イニシャライズ時の制約も結構ある。1991/05/09(Thu)ここまで書いたところで、初期化についてのまとめ。スーパークラスがない場合イニシャライザで各プロパティの値を設定すればOK。スーパークラスがある場合スーパークラスのイニシャライザを呼び出す前に自身のクラスで定義している変数・定数の初期化が済んでいる必要がある少し端折ってるけど、こんな感じだと思います。イニシャライザの継承サブクラスで指定イニシャライザを定義していないサブクラスがスーパークラスの指定イニシャライザをすべて持っているこの2つの条件のどちらかを満たす場合にサブクラスでスーパークラスのイニシャライザを継承できるらしい。「2.」の意味がよくわからない。イニシャライザを持つクラスを継承したサブクラスは、同じイニシャライザの実装が必須となる。開示すると、オプショナル型ではなくなる。この辺りは基本的に構造体と同じ設計思想。継承とサブクラスの定義プロパティの継承スーパークラスのプロパティ(格納型、計算型どちらも)を継承して上書きできる。継承とプロパティオブザーバスーパークラスのプロパティを監視できる。計算型、格納型の制限はない。修飾子を定義の先頭に付ける。修飾子がついたメソッド、プロパティを継承/overrideしようとするとコンパイル時にエラーとなる。クラスのメタタイプクラスAと、クラスAを継承したクラスBのそれぞれのインスタンスを含む配列をつくると、その配列の型はスーパークラスであるクラスAとなる。実際に属するクラスを表すオブジェクトを返す。コレ欲しかったやつだ。