インスタンスとコンストラクター

アイキャチ画像
2022/07/20
2022/09/21
DF2wknWi

プログラミング言語で初学者を悩ませる概念『インスタンス』と『コンストラクター』についてできる限りわかりやすく解説しようと思います!理解に苦しみ学習の挫折を考えてるあなたはこの記事を一度読んでみてください!

みなさんこんにちは!

この記事ではプログラミング初学者に向けてできる限り簡単にわかりやすく説明をしています。

ではさっそくこの記事のテーマを紹介します。

  • コンストラクターとはなにか
  • インスタンスとはなにか

この2つをテーマに選んだ理由はボク自身なんとなくしか理解してないのになんとなく使ってしまっていたからです。

結構この状況初学者あるあるではないでしょうか?

今回はそんなモヤモヤを解消していきます。

コンストラクターとは?

チュンすけ

みなさんはコンストラクターと聞いてなにを思い浮かべますか?

おそらくほとんどの人たちがこの単語を聞いたことがないか、英語のconstructor(製造者、建設者)という意味で知っている人がほとんどでしょう!

様々なコンストラクターについての説明があると思いますがボクは下記の様な理解をしています。

コンストラクターとはクラスのインスタンスを生成するために実行される処理(関数)を指します!

こんなのプログラミング初学者なかせですよね...

実はコンストラクターという概念はこのインスタンスと呼ばれる概念を理解することで、はじめて理解することができる概念なのです。

これだとコンストラクターだけでも良くわからないのに、インスタンスなんて単語まで出てきて混乱してしまいますよね。

イメージ画像

大体の人がここまでの説明が専門用語やよくわからない単語で書かれているためもうパンクしていると思います。

今回はできる限りわかりやすく解説するつもりなのでどうか安心してください。

ではさっそくインスタンスとはどういう概念なのか理解を深めていきましょう!

インスタンスとは?

このインスタンスという概念も聞きなれない言葉なので、多くのプログラミング初学者が理解に苦労すると言っても過言ではありません。

英語ではinstance(事実、実例)という意味ですが、プログラミング言語的な意味合いは実体という意味でよく使われています。

チュンすけ

では具体的にインスタンスとはなんなのか?

インスタンスとは設計図をもとに作り出されるオブジェクトのことです!

あらかじめ作られているクラス(設計図)を使って構築したオブジェクト、それがインスタンスということです。

イメージ画像

そしてクラス(設計図)をもとにインスタンスを生成するために必要な処理がコンストラクターと呼ばれ、この作り出すことをインスタンス化といいます。

(※クラスベースのオブジェクト指向言語の場合)

イメージ画像

また言語によってはクラスという概念がなく、その代わりにもとになるオブジェクトを複製することでインスタンスを生成することもあります。

この場合だと複製する時にコンストラクターが実行されます。

(※プロトタイプのオブジェクト指向言語の場合)

// クラス(設計図)
class example{
    public x: number
    public y: string
    constructor(){
    this.x = 10
    this.y = "example"
    }
}
//           インスタンス化
const INSTANCE = new example();

なのでコンストラクターやインスタンスはオブジェクト指向の言語でよく出てきます。

ちなみにインスタンスはnewというキーワードを使って生成することができるので、もしnewがでてきたらインスタンス化してると考えましょう!

まとめ

あなたはコンストラクターについて少しは理解を深めることはできましたか?

最後にこの記事の要点をまとめるとこんな感じです。


① コンストラクターとは?
→インスタンスを作るための処理

② インスタンスとは?
→設計図をもとに作られたオブジェクト

③ インスタンス化とは?
→newを使って設計図からインスタンスを生成すること

プログラミングを勉強したてのときはボクもこの概念を理解することがすぐにはできませんでしたが、諦めず学習を進めてちゃんと理解することが大事です。

抽象的に捉えてたモヤモヤを具体的に捉えてスッキリさせることって改めて大事だとボク自身感じました。

今回の記事を読んで少しでも参考にしてもらえたら幸いです。

更新履歴

  • コンストラクターの説明を修正(2022/9/21)
  • インスタンスの説明を修正(2022/9/21)
  • ページディスクリプションを変更(2022/9/21)
  • タイトルを変更(2022/9/21)
  • インスタンスの説明画像追加
  • ページの画像更新

参考資料