第23回 コンストラクタ

クラスからインスタンスを生成する別の書き方を習得します。

目次

クラスからインスタンスを生成する書き方復習

前回の記事では、Stringクラスを習得しました。ちょっとしつこいですがもう一度Stringクラスのインスタンス生成の方法を復習しておきましょう。

クラスからインスタンスを生成するには、例えばSwitchクラスでは以下のように書きました。

インスタンス生成

これは以下のように、SwitchクラスからhidariSwitchという名前のインスタンスを生成してください、という意味でしたよね。hidariSwitchには引数が書いてあり、Switchクラスの場合は引数はスイッチが接続されたピン番号でした。

インスタンス生成の意味

ところで、クラスからインスタンスを生成する方法として別の書き方がありますのでその書き方を説明します。実は、どちらかというとこれから説明する書き方の方が一般的なんです。

「なんだ、先に一般的ではない書き方を説明したのか、けしからん」と思われるかもしれません。そこで、上のような書き方の方を最初に習得いただいた背景を説明しておきます。

上のような書き方で説明したのは、変数の宣言と対比をしたかったためです。

変数の宣言は以下のように「変数型 変数名」の形式で書きました。

int16_t hensuu;

クラスの場合、変数に対応するように「クラス名 インスタンス名」の形式で説明しました。

Switch hidariSwitch(23);

このように、インスタンスの生成は変数と同じように、型と名前(オブジェクト名)で宣言できるわけです。これから説明する別の書き方を最初に説明すると、インスタンスを生成するイメージがちょっとわかりづらい感じなんです。

それでは、次にクラスからインスタンスを生成する別の書き方を習得します。新しい用語も出てきますので、ぜひしっかり覚えてください。

インスタンス生成の別の書き方

それでは、これから以下のインスタンス生成の書き方と同じ意味を持つ別の書き方を説明します。

Switch hidariSwitch(23);

以下の書き方は、上のインスタンス生成と同じ意味になります。

Switch hidariSwitch = Switch(23);

この別の書き方ですが、途中まではある程度わかりそうですよね。Switch hidariSwitchという部分は「SwitchクラスでhidariSwitchという名前のインスタンスを作ってください」という意味です。とは言っても、Switchクラスからインスタンスを生成するとき、そのスイッチがどのピンに接続されているか、ピン番号を指定する必要がありました。

これが次の= Switch(23)という部分になります。この部分は、「生成するSwitchクラスの接続ピン番号は23番にしてください」という意味になります。

この書き方をまとめると以下のようになります。

インスタンス生成2

Arduino IDEの「ファイルメニュー」→「スケッチ例」には多くのサンプルプログラムがありますが、インスタンス生成の書き方を見ると、今回説明した別の書き方の方が多いです。とはいっても最初に説明した書き方をする場合もあるので、クラスからインスタンスを生成する書き方については両方覚えておくようにしましょう。

コンストラクタ

今回説明した別の書き方をもう少し詳しくみてみましょう。

例えばSwitchクラスからインスタンスを生成する場合、「=」の右側にはSwitch(23)というように、クラス名と同じ名前でピン番号を指定します。

コンストラクタ

このSwitch(23)は関数みたいですよね。これは「Switchクラスから23番ピンに接続したインスタンスを生成するもの」で、関数とは区別しています。これは「コンストラクタ」と呼ばれています。

コンストラクタ

「コンストラクタ」は日本語では「建設者」とか「製造者」という意味です。この例では、「=」の右側の「Switch」は、「Switchクラスからインスタンスを生成(=製造)する」という役割をしているので、「製造者」の意味の「コンストラクタ」という名前がつけられています。

Switch hidariSwitch = Switch(23);

さて、今まで「オブジェクト」「クラス」「インスタンス」「コンストラクタ」という言葉が出てきましたので、なんだかずいぶん難しく感じたかもしれません。でも意識高い系の言葉に惑わされないでください。実際にやっていることは変数を拡張したようなもので「型」から「部品」を作ってその「部品」を制御しているだけなんです。

でもやっぱりクラスってよくわからないですよね。ということでこのシリーズの最後に、今までブラックボックスだったクラスの中身はどうなっているのか説明します。ただ、詳細に説明すると余裕で書籍1冊の内容になってしまいますので、今までの知識だけでクラスの中身はどうなっているのか、イメージがつかめるように説明します。

ところで、基礎編パート2で出てくる新しい用語は今回で最後です。次回以降、言い訳キーボードのスケッチをもう少し読みやすくしていきますが、それは今まで出てきた知識の組み合わせです。あと数回で基礎編パート2も終わりますので、もうちょっとだけお付き合いください。

更新履歴

日付 内容
2021.12.19 新規投稿
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次