11月7日(金)3、4コマ目
今日、やったこと
- [練習問題 解説]練習問題3
- クラス
- イニシャライザ
- プロパティ
- メソッド
- [練習問題]練習問題4
今日のホワイトボード
[練習問題 解説]練習問題3
前回の続き。
3-5、3-6
max()の引数の配列の要素数が0ならnilを返すため、戻り値はOptional型。
max()関数の戻り値を使うには、アンラップが必要。
[クラス]イニシャライザ
JavaやC#のコンストラクタ。
イニシャライザ内では、まずプロパティの初期化を行うこと。
![]() |
| 図 イニシャライザ内の処理順序 |
[クラス]コンビニエンスイニシャライザ
JavaやC#でできたコンストラクタのオーバーロードがSwiftではNG。
代わりにコンビニエンスイニシャライザがある。
コンビニエンスイニシャライザ内では、まず、指定イニシャライザを実行すること。
![]() |
| 図 指定イニシャライザとコンビニエンスイニシャライザの関係 |
簡単なサンプルで確認。
インスタンス生成には new はいらない。
[クラス]プロパティ
何に紐づくか(インスタンス?クラス?)、値を保持する(=Javaのフィールド)、値を保持しない(処理をする)かで分類ができる。
![]() |
| 図 プロパティの分類 |
一見、ややこしそうに見えるが、何気に今までのフィールドやプロパティと同じ。
[クラス]メソッド
メソッドもプロパティ同様、インスタンスに紐づくインスタンスメソッドと、クラスに紐づくタイプメソッドがある。
[クラス]タイプxxとクラスxxの違い
両方ともクラスに紐づく点は同じ。
違いはオーバーライドできるか、できないか。
タイプxxはサブクラスでオーバーライドできない。
クラスxxはサブクラスでオーバーライドできる。
[練習問題]練習問題4
クラスの問題。正解例をあげておきます。
4-1
4-2
次回は
構造体。


