Javaを勉強していると次にぶつかるのが「オブジェクト」。そもそもクラスと何が違うのかわからない、メソッドや変数の使い方がピンとこない。そんな体験、ありませんか?
私も最初は「new」の意味が分からず、オブジェクトがごちゃごちゃになり、エラーでコードが止まってました。
この記事では、Javaの「クラスとオブジェクト」の関係を、小学生でもわかるようにやさしく解説します!
「オブジェクトの作り方がわかったらJavaが楽しくなった」「自分でクラスを作れるようになった」などの声も多数あります。
「ヒト」をクラスにして、そこから作られる「大何部さん」をオブジェクトにするといった、悪くないたとええも描きます。
Javaをほんの少し楽しく解れるには、オブジェクトの理解が必須!さあ、いっしょにやってみましょう!
クラスとオブジェクトの違いをわかりやすく
クラスは「作り方」、オブジェクトは「できたもの」
ゲームで言えば「キャラクターの設定画面」と「そのキャラがフィールドに現れたもの」。
具体例を見てみましょう!
public class Dog {
String name;
void bark() {
System.out.println("Wan!");
}
}
public class Main {
public static void main(String[] args) {
Dog pochi = new Dog(); // ← ここでオブジェクトが作られる!
pochi.name = "ポチ";
pochi.bark(); // → "Wan!"
}
}
これがクラスとオブジェクトの基本構造です!
オブジェクトの生成方法とnewの使い方をマスターしよう
Javaでオブジェクトを作るには、必ず「new」というキーワードを使います。これを使うことで、クラスから実体である“オブジェクト”が生まれます。
「new」は「新しく作る」という意味の英語。
このキーワードを使って、クラスという設計図から実際のオブジェクトを作成します。newがなければ、どれだけ立派なクラスを書いても、その機能は使えません。
だから、Javaプログラミングでは必ず知っておくべき基本の1つです。
たとえば、「Car(車)」というクラスがあったとします。
public class Car {
String color;
void run() {
System.out.println("ブーンと走ります");
}
}
このクラスを元にオブジェクトを作るには、次のように書きます。
Car myCar = new Car();
myCar.color = "赤";
myCar.run(); // → ブーンと走ります
ここでの new Car()
がとても大切な部分です。まさにここで「Car型の新しい車(オブジェクト)」を作っています。
Car
:クラス名new
:新しいオブジェクトを作るキーワードCar()
:クラスの「コンストラクタ」(←次で解説)myCar
:変数名(オブジェクトへの名前)
この1行がなければ、車は存在しません。そしてこの車を使って、color
というフィールドに色を設定したり、run()
というメソッドを実行したりできます。
オブジェクトを使うには、まず new クラス名()
を書いて作るのが大前提です!それがオブジェクト指向プログラミングの第一歩なんです!
フィールドとメソッドを使いこなすために知っておくべきこと
フィールドとメソッドは、オブジェクトの「性格」と「行動」を表します。これを理解すれば、オブジェクトをより自由に使えるようになります。
フィールド(変数)はオブジェクトの「情報」、メソッド(関数)はオブジェクトの「行動」です。
Javaではこれらをクラスの中に定義し、作られたオブジェクトがそれを使う仕組みになっています。
フィールドは「色」や「名前」などの属性、メソッドは「走る」「鳴く」などの動作です。
たとえば、ネコを表すクラスを考えてみましょう。
public class Cat {
String name; // フィールド(情報)
void meow() { // メソッド(行動)
System.out.println(name + "がニャーと鳴いた");
}
}
public class Main {
public static void main(String[] args) {
Cat tama = new Cat();
tama.name = "タマ";
tama.meow(); // → タマがニャーと鳴いた
}
}
このように、name
が「情報」、meow()
が「行動」です。
フィールドとメソッドを正しく使えると、オブジェクトのふるまいがコントロールしやすくなり、プログラムもわかりやすくなります!
複数のオブジェクトを扱うと混乱するあなたへ:配列とリストの基礎理解
複数のオブジェクトを管理するには、「配列」や「リスト(ArrayListなど)」を使うのが基本です。しかし、それぞれに特徴があるので混乱しがちです。
配列(Array)は、決まった数のデータを順番に並べて使う方法です。一方、リスト(ArrayList)は、必要に応じてサイズを変えられる便利なツールです。
まずは配列の例です:
Cat[] cats = new Cat[3];
cats[0] = new Cat();
cats[0].name = "タマ";
cats[0].meow();
次に、リスト(ArrayList)を使う場合です:
import java.util.ArrayList;
ArrayList<Cat> catList = new ArrayList<>();
catList.add(new Cat());
catList.get(0).name = "ミケ";
catList.get(0).meow();
配列は長さが固定されている一方で、リストは add()
や remove()
で自由に数を変えられます。
ゲームで言えば、配列は「固定パーティー」、リストは「途中でメンバー変更可能なパーティー」と思えばイメージしやすいでしょう。
配列は「数が決まっているとき」、リストは「数が変わるかもしれないとき」に使うのがオススメです。
==とequalsの違いをやさしく理解しよう
Javaでオブジェクトを比較するときに間違いやすいのが「==」と「equals」の違いです。これを正しく使い分けることがとても大切です。
「==」は「同じモノか(アドレス)」を比べます。一方「equals」は「中身が同じか(値)」を比べます。オブジェクトは見た目が同じでも、違う場所に作られていれば ==
では false
になります。
例えば次のコードを見てみましょう。
String a = new String("hello");
String b = new String("hello");
System.out.println(a == b); // false(違う場所)
System.out.println(a.equals(b)); // true(中身は同じ)
このように、==
は「物理的に同じ場所かどうか」、equals
は「内容が同じかどうか」を見ています。特に String
や自作クラスでは equals()
を使うのが正しい判断です。
文字列やオブジェクトの比較には必ず equals()
を使おう! ==
は「本当に同じ場所か」を確かめる特別なケースに使います。
まとめ 〜オブジェクトの理解がJavaを面白くする〜
Javaでプログラムを書くうえで、「オブジェクトの理解」はまさに入り口であり、核となる考え方です。本記事では以下のようなことを学びました:
- クラスとオブジェクトの違い(設計図と実物)
new
の使い方(オブジェクトの生成)- フィールドとメソッドの役割(情報と行動)
- 複数オブジェクトの扱い方(配列とリスト)
- 比較方法(==とequalsの違い)
これらをしっかり理解することで、Javaの世界がぐっと広がります。次に何かを作るとき、きっと「これはクラスを作った方がいいな」「このオブジェクトをリストで管理しよう」といった考えが自然に浮かぶようになるでしょう。
オブジェクト指向は難しく感じるかもしれませんが、一歩ずつ経験を積めば、必ず理解できるようになります。焦らず、楽しんで学んでいきましょう!