Java のオブジェクトとは?クラスからインスタンスを作る方法
新人
「先輩、Javaの“オブジェクト”ってよく聞くんですけど、それって何なんですか?」
先輩
「Javaでは、オブジェクトというのは実際に動かすことができる“実物”のことだよ。設計図であるクラスから作るんだ。」
新人
「クラスとオブジェクトって別のものなんですか?同じだと思ってました…」
先輩
「よくある勘違いだね!クラスは設計図で、オブジェクトはそれをもとに作った“動くモノ”だよ。これからJavaの基本をわかりやすく説明していくね。」
1. Javaのオブジェクトとは?(やさしく基本を解説)
Javaのオブジェクトとは、「クラス」という設計図から作られた実物のことです。クラスだけでは動かせないけど、クラスから作ったオブジェクトは、実際に情報を持ったり動かしたりすることができます。
たとえば、「人」というクラスがあったとすると、「たろうさん」や「はなこさん」といった個別の人がオブジェクトになります。それぞれが名前や年齢といった情報を持っている状態です。
Javaでは、こうしたオブジェクトをたくさん作ることで、複雑なプログラムもわかりやすく整理できます。
初心者のうちは、「オブジェクトはクラスから生まれる実物」と覚えておくと良いでしょう。
2. クラスとオブジェクトの関係を理解しよう(設計図と実物のたとえ)
Javaのクラスとオブジェクトの関係をわかりやすく説明するには、「設計図と製品」のたとえがとても効果的です。
たとえば、「椅子」を作りたいとき、まずはどんな形にするかを決めた「設計図」を描きますよね。この設計図が「クラス」にあたります。
その設計図をもとに、木材を使って実際に椅子を作ります。これが「オブジェクト」です。
同じ設計図を使えば、同じ形の椅子を何個でも作れます。色を変えたり、高さを変えたりしても、それぞれが独立したオブジェクトになります。
Javaでも同じように、クラスという設計図を1つ作れば、そこからたくさんのオブジェクト(インスタンス)を作ることができます。
実際にJavaのコードで書くと、次のようになります。
public class Person {
String name;
int age;
void introduce() {
System.out.println("こんにちは、私は" + name + "です。年齢は" + age + "歳です。");
}
}
このPersonクラスは「人」という設計図です。このクラスを使ってオブジェクトを作ってみましょう。
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "たろう";
p1.age = 20;
p1.introduce();
Person p2 = new Person();
p2.name = "はなこ";
p2.age = 18;
p2.introduce();
}
}
こんにちは、私はたろうです。年齢は20歳です。
こんにちは、私ははなこです。年齢は18歳です。
このコードでは、Personクラスからp1とp2という2つのオブジェクトを作っています。それぞれに名前と年齢を設定して、introduceメソッドを使って自己紹介をさせています。
このように、クラスから作ったオブジェクトは、独自の情報を持ち、動きを実行することができます。
Pleiadesを使えば、上のコードをすぐに書いて動かすことができます。初心者の方も、ぜひ試してみてください。
Javaの「オブジェクト指向」では、このクラスとオブジェクトの関係がとても重要です。難しく考えずに、「設計図から何個でも実物を作れる」というイメージを持つだけで、理解がぐっと深まります。
3. Javaでインスタンスを作るには?(newの使い方を解説)
Javaでオブジェクト(インスタンス)を作るときは、必ずnewというキーワードを使います。このnewは、「新しいものを作る」という意味で、クラスから実物を作るときに使われます。
たとえば、「Person」クラスからインスタンスを作るには、次のように書きます。
Person p1 = new Person();
この1行には大きく3つの意味があります。
Person:これは作りたいオブジェクトの型です。つまり、Personクラスのことを指しています。p1:これはそのオブジェクトを使うための「名前」です。自分でわかりやすい名前をつけられます。new Person():これが実際にPersonクラスからインスタンスを作る部分です。
このように、Javaでは「クラス名+new+()」という形で、新しいオブジェクトを作ることができます。
このやり方はどんなクラスでも基本的には同じなので、最初にしっかり覚えておくと、Javaの学習がとてもスムーズになります。
PleiadesでJavaのコードを書くときも、この形式でインスタンスを作って、変数に入れておけば、あとでそのオブジェクトの情報や動きを自由に使うことができます。
4. 複数のオブジェクトを作ってみよう(それぞれに異なるデータを入れる)
Javaでは、同じクラスからいくつでもオブジェクト(インスタンス)を作ることができます。そして、それぞれのオブジェクトは自分だけの情報を持つことができます。
たとえば、先ほどのPersonクラスを使って、「たろうさん」と「はなこさん」という2人のオブジェクトを作り、それぞれに違う情報を入れてみましょう。
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "たろう";
p1.age = 20;
Person p2 = new Person();
p2.name = "はなこ";
p2.age = 18;
Person p3 = new Person();
p3.name = "けんた";
p3.age = 25;
p1.introduce();
p2.introduce();
p3.introduce();
}
}
こんにちは、私はたろうです。年齢は20歳です。
こんにちは、私ははなこです。年齢は18歳です。
こんにちは、私はけんたです。年齢は25歳です。
このコードでは、同じPersonクラスを使ってp1、p2、p3という3つのインスタンスを作っています。そして、それぞれに違う名前や年齢を設定しています。
それぞれのインスタンスが自分だけのnameやageを持っていて、それを使ってintroduce()メソッドで自己紹介をしています。
このように、Javaではクラスが1つあれば、たくさんのオブジェクトを自由に作ることができます。そして、それぞれに個別のデータを持たせることができるので、たとえば「ユーザー一覧」や「商品一覧」などを扱うプログラムも、クラスとオブジェクトの仕組みでスッキリ作ることができます。
この使い方は、初心者向けのJava学習でも非常に大切な部分です。オブジェクトを使いこなせるようになると、プログラムがもっと面白く、便利になります。
実際にPleiadesでこのコードを入力して実行してみてください。出力結果がきちんと変わることで、オブジェクトごとにデータが独立していることが体感できます。
このようにして、Javaではクラスとインスタンスを組み合わせることで、「モノとその動き」をうまくプログラムの中で表現できるようになります。これはJavaのオブジェクト指向の基本中の基本なので、しっかりと覚えておきましょう。
5. オブジェクトにデータを入れて使う方法(フィールドの代入)
Javaで作ったオブジェクトには、「データ」を入れることができます。このデータは、クラスの中に定義された「フィールド(変数)」に代入します。
たとえば、Personクラスにはnameとageというフィールドがありました。オブジェクトを作ったあとに、次のようにしてデータを代入できます。
Person p1 = new Person();
p1.name = "たろう";
p1.age = 20;
このように、オブジェクト名.フィールド名という形で、値を代入することができます。
これで、p1というオブジェクトには「名前:たろう」「年齢:20歳」という情報が入りました。
この情報は、あとでプログラムの中で使うことができます。たとえば、画面に表示したり、条件分岐に使ったりすることができます。
System.out.println("名前:" + p1.name);
System.out.println("年齢:" + p1.age + "歳");
名前:たろう
年齢:20歳
このように、オブジェクトにデータを入れておくことで、必要なときにそのデータを取り出すことができます。
複数のオブジェクトを作った場合、それぞれのオブジェクトは独立しているので、別々のデータを持つことができます。
Person p2 = new Person();
p2.name = "はなこ";
p2.age = 18;
p1とp2は同じクラスから作られていますが、それぞれ違う情報を持っています。このように、オブジェクトを使い分けることで、たくさんの人やモノをプログラムの中で表現できるようになります。
初心者のうちは、オブジェクトに「データを代入する→あとで使う」という流れを何度も繰り返して、自然に身につけていきましょう。
6. オブジェクトの動きを実行する(メソッドの呼び出し)
Javaのオブジェクトは、ただデータを持っているだけではなく、「動き」も持つことができます。この動きは、クラスの中に書かれた「メソッド」として定義されます。
たとえば、Personクラスにintroduce()というメソッドがありました。これは、自己紹介をするための動きです。
オブジェクトからこのメソッドを呼び出すには、次のように書きます。
p1.introduce();
オブジェクト名.メソッド名()という形で書くことで、そのオブジェクトが持っているメソッドを実行できます。
このようにして、オブジェクトの動きを自由に操作できるのが、Javaの大きな特徴です。
さらに、オブジェクトごとにデータが違えば、同じメソッドを使っても、出力される結果が変わってきます。
p1.introduce(); // たろうの自己紹介
p2.introduce(); // はなこの自己紹介
こんにちは、私はたろうです。年齢は20歳です。
こんにちは、私ははなこです。年齢は18歳です。
このように、オブジェクトに合わせて動作が変わるのも、Javaのオブジェクト指向の魅力の一つです。
初心者のうちは、メソッドは「そのオブジェクトが持っている動き」と覚えておくと理解しやすいです。
Javaでは、自分で新しいメソッドを作ることもできます。たとえば「歩く」「走る」「眠る」など、クラスに合わせた動きを増やすことで、よりリアルで便利なオブジェクトを作ることができます。
Pleiadesでは、コードを打ってすぐに動かすことができるので、いろいろなメソッドを試しながら学んでいきましょう。
7. 振り返りと初心者へのメッセージ
ここまで、Javaの「オブジェクトとは何か?」という基本から、「クラスとの関係」「インスタンスの作り方」「データの入れ方」「メソッドの使い方」までを見てきました。
最初は「クラス?インスタンス?オブジェクト?」と混乱するかもしれませんが、実際にコードを書いてみると少しずつ見えてきます。
クラスは設計図、オブジェクト(インスタンス)はその実物。これをしっかりイメージできるようになると、Javaのプログラムをスムーズに書けるようになります。
今回紹介したPersonクラスのように、自分の身近なモノをプログラムにしてみるのもおすすめです。「ペット」「本」「商品」など、自分でクラスを考えて、オブジェクトを作ってみましょう。
Javaは、最初はむずかしそうに見えるかもしれませんが、ひとつひとつ丁寧に理解していけば、必ず使いこなせるようになります。
これからも少しずつステップアップしながら、「Javaの基本」をしっかり身につけていきましょう。