「Javaの勉強を始めたけど、インスタンスって何?」
「インスタンスとクラスの違いが理解できない」
インスタンスやクラスはJavaのようなオブジェクト指向プログラミング言語で必須の概念となります。
ただ概念であるため、非常に理解が難しく初心者がつまずきやすいポイントでもあります。
そこで今回の記事では、プログラミングやJava初心者の方に向けて、インスタンスをわかりやすく解説していきます。
この記事を読むことで、
- オブジェクト指向とは
- クラスとインスタンスの違い
- 実際にインスタンスを使う方法
などのインスタンスやクラスの基本的な内容を解説していきます。
実際にサンプルプログラムを用いて説明しているので、わかりやすくなっていますよ!
何を隠そう僕自身もプログラミングの勉強を始めた頃は、クラスやインスタンスといった概念が理解できずに苦しんでいました。
それでも今はなんとかエンジニアとして働くことができています。
だからこそ、初心者の方にも理解できるようわかりやすく解説しているので、ぜひこの記事を読んでみてください!
オブジェクト指向とは
インスタンスの前にJavaやインスタンスを勉強する上で大切な概念となるオブジェクト指向について説明します。
オブジェクト指向について、詳しく説明するとそれだけで一つの記事が出来上がってしまうので今回は簡単に解説します。
オブジェクト指向は、僕たちが住んでいる現実世界をプログラムの世界でも表現できるようにした概念です。
オブジェクト指向は次のような基本的な要素から構成されています。
- クラス(設計図のようなもの)
- インスタンス(オブジェクトとも呼ばれる)
- 属性(インスタンスが持つ情報や状態)
- メソッド(インスタンスが行う行動や動作)
オブジェクト指向は概念なので、理解するのが非常に難しいです。
ぶっちゃけ、世の中のエンジニアでもオブジェクト指向言語は使っているけれど、オブジェクト指向でプログラミングしていない人もたくさんいます(もしかしたら僕もそのうちの一人かもしれない)
オブジェクト指向は現役エンジニアでも正しく理解して、使える人は少数派です。
そのため初心者の方が、最初から完璧に理解する必要はありません。
繰り返し勉強していきながら、少しずつ使い方や理解を深めていけば問題ありません!
ちなみに僕は最初の頃全く理解できませんでしたが、ある日突然理解できるようになりました!そんなもんです。
Javaのクラスとインスタンスについて
ここからはオブジェクト指向の中核をなす、クラスとインスタンスについて説明します。
Javaのクラスとは?
Javaのクラスはよく「設計図のようなもの」と例えられます。
例え話をしましょう。
あなたが「犬」という言葉を聞いた時、どんなことを思い浮かべますか?
4本足で、尾を振り、吠える生き物
このような生き物を思い浮かべるかもしれません。
「犬」というのは抽象的な概念で、あなたが「犬」に対して持っている特徴や行動を表現しています。
これをプログラミングの世界で考えた時に、「クラス」という概念になります。
先ほどのあなたが思い浮かべている「犬」は実際には存在しません。
それと同じように「クラス」は実際には存在しない「設計図」のようなものです。
Javaのインスタンスとは?
インスタンスとは、設計図であるクラスから具体的な「犬」を作成したもののことです。
あなたが「犬」と聞いて、特徴を挙げただけでは、実際の犬は存在せず触ったりご飯をあげることはできません。
実際にペットショップなどに犬を買いに行くことで、実態として犬に触れたりご飯をあげたり名前をつけることができます。
プログラムの世界では、ペットショップに買いに行く行為をインスタンス化と呼びます。
つまりインスタンス化をすることで、クラスを具体化し実際に利用することができます。
まとめると次のようになります。
- 「犬」と聞いて特徴を挙げたもの→クラス
- ペットショップに買いに行って実際に手に入れた犬→インスタンス
今回はJavaの勉強としてクラスやインスタンスについて説明していますが、実際にはPythonやRubyといった他のオブジェクト指向言語でも共通している考え方になります。
実際のコードでインスタンスを使ってみよう!
ここまでは言葉でクラスやインスタンスについて説明してきました。
ここからは実際にJavaのコードを書いてクラスやインスタンスについて説明していきます。
インスタンス化するクラスを作成
今回は例として「Dog」クラスを作成します。
Dogクラスには、次のような犬が持つ一般的な特徴
- 名前
- 年齢
- 犬種
犬が行う一般的な行動
- 吠える
- 走る
- 食べる
のようなものを定義していきます。
まずはDogクラスの雛形です。
public class Dog {
}
ここに犬が持つ一般的な特徴を追加すると次のようになります。
public class Dog {
// 犬の名前
String name;
// 犬の年齢
int age;
// 犬種
String breedDog;
}
さらに犬が持つ一般的な行動を追加します。
これがDogクラスの最終形です。
public class Dog {
// 犬の名前
String name;
// 犬の年齢
int age;
// 犬種
String breedDog;
// 犬が吠える
public void roar() {
System.out.println("わんわん!!");
}
// 犬が走る
public void run() {
System.out.println(this.name + "が走るわん!");
}
// 犬が食べる
public void eat(String food) {
System.out.println(food + "を食べるわん!");
}
}
これで作られたクラスはあくまでも一般的なイメージをまとめたものにすぎず、実際に吠えたり走ったりすることができません。
newを使ってインスタンス化する
先ほど作成したDogクラスをインスタンス化してみましょう。
インスタンス化するためには「new」演算子を使うことで可能です。
具体的にDogクラスをインスタンス化する際はこうなります。
// newを使って、Dogクラスをインスタンス化
Dog pochi = new Dog();
抽象的に書くとこうなります。
クラス名 変数名 = new クラス名();
インスタンスを利用する
実際にインスタンス化してインスタンスを使ってみましょう!
mainメソッドでDogクラスをインスタンス化して、名前をつけて走らせます。
public class Main {
public static void main(String[] args) {
// Dogクラスをインスタンス化
Dog pochi = new Dog();
// nameにポチを代入
pochi.name = "ポチ";
// ポチを走らせる!
pochi.run();
}
}
このコードの実行結果はこうなります。
ポチが走るわん!
インスタンスは大量生産できる
一度クラスさえ作ってしまえば、インスタンスは大量に生産することが可能です。
mainメソッドで犬を大量生産してみましょう。
public class Main {
public static void main(String[] args) {
// Dogクラスを大量にインスタンス化
Dog pochi = new Dog();
Dog charlie = new Dog();
Dog lucy = new Dog();
Dog bob = new Dog();
Dog leo = new Dog();
// nameを代入
pochi.name = "ポチ";
charlie.name = "チャーリー";
lucy.name = "ルーシー";
bob.name = "ボブ";
leo.name = "レオ";
// 犬を走らせる!
pochi.run();
charlie.run();
lucy.run();
bob.run();
leo.run();
}
}
実行結果は次のようになり、犬が大量に走り回っています。可愛いですね。
ポチが走るわん!
チャーリーが走るわん!
ルーシーが走るわん!
ボブが走るわん!
レオが走るわん!
挫折せずにプログラミング学習するには?
Javaなどのプログラミング言語の理解を深めるには、専門的な知識と実践的なスキルが必要となります。
プログラミング初心者の方には、プログラミングスクールの受講がおすすめです。
プログラミングスクールでは、基本的なプログラミングの概念から始まり、具体的なアプリケーション開発まで幅広いスキルを身につけることができます。
さらに現役エンジニアから指導を受けることで、実践的なスキルを身につけることもできます。
特にJavaは、Webアプリケーション開発だけでなく、エンタープライズシステムの開発にも広く使用されています。
そのため、Javaのスキルを身につけることは、IT業界でのキャリアを広げる大きな一歩となるでしょう。
特におすすめなのは、月額10,780円から通うことができるFreeksです。
多くのプログラミングスクールが数ヶ月で数十万円の受講費がかかる中、Freeksでは月額制でコスパよく学習を進めることができます。
現役エンジニアに質問できる環境や就職・転職支援も受けることが可能です。
Freeksでは無料カウンセリングを行なっています。
- Javaを学んでエンジニアになりたい
- 挫折することなくプログラミングを学んでいきたい
という方におすすめなので、気になる方は一度公式サイト(https://freeks-japan.com/)から無料説明会に申し込んでみてください!
まとめ
今回はJavaのインスタンスについて説明してきました。
インスタンスは非常に理解しにくい概念で、僕がプログラミングを始めた時も訳が分からず発狂していました。
しかし繰り返し学習を続けていくことで、理解できる日が来ます。
僕はインスタンスやクラスといったオブジェクト指向の基本を理解できるようになってから、プログラミングが楽しくなりました!
最初は理解できなくても良いので、他の記事や参考書などいろいろな説明を受けて、少しずつ理解できるようにしましょう。
このようにエンジニア大学ではプログラミング初心者に役立つ方法を発信しています。
未経験からエンジニアを目指したい人はぜひエンジニア大学を活用してみてください。
【関連記事】未経験におすすめの転職エージェント厳選4社
【関連記事】Javaの学習ロードマップ4STEP