【Java初心者】インスタンスとは

この記事では、Javaのオブジェクト指向プログラミングを利用する上で欠かせない存在になってくるインスタンスとは何か?について説明していきます。

インスタンスの正体

まずは、インスタンスがどんなものであるかクラスとオブジェクトとの関係性を交えながら説明していきます!

オブジェクトとは

オブジェクトとは、オブジェクト指向のオブジェクトのことであり、クラスやインスタンスをまとめてオブジェクトと呼びます。

オブジェクト指向プログラミングにおいて、オブジェクトとは非常に抽象的な言葉であるため具体的な話をする場面ではあまり使わないかもしれません。

オブジェクトという表現を見かけたら、インスタンスやクラスのことを表しているんだなと解釈し、あまり深く考え込まないようにしましょう!

クラスとは

基本文法としてクラスを学習した際には、クラス=ソースファイルであったり、メソッドを機能ごとにまとめられる存在として覚えていたと思います。

しかし、オブジェクト指向でのクラスは、確かに基本文法としての覚えたものと同じクラスではあるのですが、全くの別物として考えて貰ったほうがいいかもしれません。

オブジェクト指向において、クラスはインスタンスを生成するための設計図です。

オブジェクト指向プログラミングでは、基本的にはクラスそのものを使用せず、クラスから作り出したインスタンスを使用します

インスタンスとは

インスタンスとは、クラスをもとに生成された本体のことです。オブジェクト指向プログラミングでは、このインスタンスを必要なだけ作り出して利用します。

実際にプログラムとして書くのはクラス(設計図)ですが、プログラムを動かした際にクラス(設計図)をもとにインスタンスを作り出して、固有の情報を持たせてあげます。

作り出したインスタンスは、プログラムが動いている間は、実態として存在し、自分が持っている役割を果たします

三者の関係性

インスタンス、クラス、オブジェクトについて文章で長々と説明してしまいましたけど、3つの関係性としてはざっくりこんな感じです。

インスタンスの構成

インスタンスは、属性操作という2つの要素を持っています。

属性とは、インスタンスのプロフィールとして持っておく情報のようなもので、人でいうと名前や住所年齢などにあたります。クラスに名前や住所を入れる箱を用意しておいてあげて、インスタンス生成時にそこに情報を入れてあげるイメージです。

操作とは、インスタンスが実際に行う作業のことで、簡単に言ってしまうとメソッドです。そのインスタンスにどんな動作をさせるかをはっきりと決めることができます。

インスタンスのイメージ

インスタンスをわかりやすく野球少年に例えて、なるべくイメージが掴めるように努めてみます!

クラスをもとにインスタンスを生成

クラスからインスタンスを生成すると同時に属性(インスタンスの持つ情報)を与えてあげる時のイメージです。

野球少年用のクラス(設計図)を作る場合には、操作には野球少年に行って欲しい動きを入れます。

そして属性は、インスタンスを生成した際に属性を指定できるように属性の入れ物を用意してあげます。

上の図では、クラス(設計図)からインスタンス生成時に、名前と生年月日と部活の情報をインスタンスに渡してあげているため、たっちゃんのインスタンス(実態)があっという間にできました!

クラスから複数の似たようなインスタンスをすぐに作れる!

建物の設計図があれば、それをもとに同じ建物をたくさん作ることができますよね!また、その設計図をもとに、似ているけどそれぞれ特徴の異なる建物を作ることもできます。

同様にクラスを1つ作っておけばそのクラスから、いくつでも似たようなインスタンスを生成することができます!

これはインスタンスの大きなメリットで、例えば野球のゲームを作ることになり、9人分の選手のデータを扱いたいとします。

インスタンスを利用しないとなると、9つのクラスをわざわざ作ることになり、開発にもその後の管理にも負担がかかります。

しかし、インスタンスを用いると1つのクラスを用意するだけで、9つのインスタンスをあっという間に作れてしまいます

まとめ

簡単にまとめると、インスタンスはクラスという設計図をもとに作り出すことができ、利用することで開発を楽にしてくれる便利なものです!

他にも【Java初心者】オブジェクト指向プログラミングとはについてもまとめているのでぜひご覧になってみてください!

以上、ご覧いただきありがとうございました。