第23回 コンストラクタ

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

目次

インスタンスを生成する書き方の復習

前回の記事では、Stringクラスを習得しました。

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


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

これは次のように、Switchクラス(Switchという部品型)から、hidariSwitchという名前のインスタンス(実際の部品)を生成してください、という意味でしたよね。

hidariSwitchには引数があり、Switchクラスの場合、引数はスイッチが接続された端子名でした。


ところで、クラスからインスタンスを生成する方法として別の書き方がありますので、その方法を説明します。

実は、どちらかというとこれから説明する書き方の方がよく見かけるように思います。

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

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

今までのスケッチでは次のようにインタンスを生成していました。

Switch hidariSwitch(A5);

次のスケッチは、このインスタンス生成と同じ意味になります。

Switch hidariSwitch = Switch(A5);

この別の書き方ですが、前半部分は今までと変わりありません。

Switch hidariSwitchという部分は「SwitchクラスでhidariSwitchという名前のインスタンスを作ってください」という意味です。

Switchクラスからインスタンスを生成するとき、そのスイッチがどの端子に接続されているか、端子名を指定する必要がありました。

これが後半部分の= Switch(A5)になります。

この部分は、「生成するインスタンスの接続端子はA5にしてください」という意味になります。

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

Arduino IDEの「ファイルメニュー」→「スケッチ例」には多くのサンプルプログラムがありますが、インスタンス生成の書き方を見ると、今回説明した別の書き方の方が多く見かけます。

とはいっても最初に説明した書き方をする場合もあるので、クラスからインスタンスを生成する書き方については両方覚えておくと良いかな、と思います。

コンストラクタ

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

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

このSwitch(A5)は関数みたいですよね。

これは関数とは違って、「SwitchクラスからA5に接続したインスタンスを生成するもの」で、「コンストラクタ」と呼ばれています。

「コンストラクタ」は日本語では「建設者」とか「製造者」という意味です。

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


今まで「オブジェクト」「クラス」「インスタンス」「コンストラクタ」という言葉が出てきましたので、なんだかずいぶん難しく感じたかもしれません。

でも意識高い系の言葉に惑わされないようにしてください。

実際にやっていることは変数を拡張したようなものです。

変数の場合は、「変数型」から「実際の変数」を作り、それを操作していましたよね。

クラスの場合も、「部品型」から「実際の部品」を作り、その「部品」を制御しているだけなんです。

でもやっぱりクラスってちょっととっつきづらいところがありますよね。

ということでこのシリーズの最後に、今までブラックボックスだったクラスの中身はどうなっているのか説明します。

ただ、詳細に説明するとかなりなボリュームになってしまいますので、今までの知識だけでクラスの中身はどうなっているのか、イメージがつかめるように説明します。

ところで、基礎編パート2で出てくる新しい用語は今回で最後!です。

次回以降、言い訳キーボードのスケッチをもう少し読みやすくしていきますが、それは今まで出てきた知識の組み合わせです。

あと3回で基礎編パート2も終わりますので、もうちょっとだけお付き合いいただければと思います。

更新履歴

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