【Swift入門】初期化処理(init)の使い方を理解しよう!

こんにちは!フリーエンジニアのヤマシタです。

Swiftでは他のオブジェクト指向言語同様クラスの初期化処理を行うことができます。

この記事では、

・initメソッドとは
・initメソッドの基本的な使い方
・initメソッドで引数を指定する方法

というクラスの基本的な解説から、

・initメソッドを複数定義する方法
・構造体でinitメソッドを使用する方法

などの応用的な使い方に関しても解説していきます。

今回はそんな初期化処理(init)の使い方についてわかりやすく解説します!

※この記事ではSwift3.1を使用しています。

initメソッドとは

initメソッドとは、クラスのインスタンスを生成するときに自動で呼び出されるメソッドのことでイニシャライザとも呼びます。

initメソッドは主にクラスのプロバティの初期値を設定するときに使用します。

イニシャライザを使用することでクラスの記述内容がより分かりやすくなり、明確に初期化を行いソースコードの安全性を高めることができます。

なお、クラスについては以下の記事で解説していますので参考にしてください!

クラスをinitメソッドで初期化する

ここではinitメソッドの使い方を見ていきましょう。

基本的な使い方

以下にinitメソッドの基本的な使い方を紹介します。

サンプルプログラム

実行結果:

このサンプルではクラスSampleClassの中でプロパティの宣言と、initメソッドの中でプロパティの初期化を行っています。

処理の流れとしては、クラスの外でクラスのインスタンスを生成時に自動でinitメソッドが呼び出されます。

そして、クラスで宣言している2つの変数に対して、初期値を設定します。

initメソッドで設定した値はクラスの外から「クラスのオブジェクト.プロパティ名」を指定して参照することができます。

引数を指定する方法

initメソッドは引数を指定して初期化処理を行うこともできます。

サンプルプログラム1

実行結果:

このサンプルではnum1、num2の2つの変数をインスタンスの初期化時に必要なパラメータとして設定しています。

そのため、メソッドのパラメータには引数としてnum1、num2を指定する必要があります。

以下のようにインスタンス生成時のクラスの引数に値だけ指定するとエラーになりますので注意しましょう。

サンプルプログラム2

複数定義する方法

initメソッドは目的別に複数定義することもできます。

以下にInt型の値を初期設定するinitメソッドと、String型の値を初期設定するinitメソッドを定義するサンプルを紹介します。

サンプルプログラム

実行結果:

このように複数のinitメソッドを定義できることがわかりますね!

インスタンス生成時はそれぞれinitメソッドで定義した引数と一致する型と値を指定する必要がありますので気をつけてください。

構造体をinitメソッドで初期化する

initメソッドによる初期化処理はクラス以外にも構造体で使用することができます。

サンプルプログラム

実行結果:

このように構造体もinitメソッドを使用して初期化処理が行えることがわかりますね!

なお、構造体については以下の記事で詳しく解説していますのでぜひ参考にしてくださいね!

まとめ

ここではSwiftの初期化処理について、

・initメソッドとは
・initメソッドの基本的な使い方
・initメソッドで引数を指定する方法
・initメソッドを複数定義する方法
・構造体でinitメソッドを使用する方法

などについて解説しました。

クラスや構造体でinitメソッドを使うことにより、初期化処理を明確に記述することができますので積極的に活用するようにしましょう。

もしinitメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

経験豊富なエンジニアに相談したいあなたへ

「IT業界の実情についてエンジニアの生の声を聞きたい、既にIT業務の仕事をしていて解決したい課題があるから相談にのってもらいたい」そんな要望はございませんか?

周りにエンジニアをやっている人がいないと、実際の現場のことがイメージできず不安ですよね。

侍エンジニア塾の無料体験レッスンでは、ご質問内容によって「現役エンジニア」があなたの開発したいサービスへ技術的なアドバイスや、未経験から内定を獲得する転職活動の極意をお伝えいたします。

下記の無料体験レッスン予約カレンダーよりお申し込みいただけます。あなたのご相談を心よりお待ちしております。

LINEで送る
Pocket

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説