【Java】レッスン5-01:クラスの定義とインスタンスの使い方を理解しよう

一つ前の章ではJavaのコレクションについて学習しました。
今回からはいよいよJavaの神髄「オブジェクト指向」を学習していきます。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス編
・Lesson5-1:クラスの基本を確認しよう ◁今回はココ
・Lesson5-2:コンストラクタを理解しよう
・Lesson5-3:カプセル化を理解しよう
・Lesson5-4:クラスメンバとインスタンスメンバを理解しよう
・Lesson5-5:クラスの継承を理解しよう
・Lesson5-6:メソッドのオーバーライドを理解しよう
・Lesson5-7:抽象クラスを理解しよう
・Lesson5-8:インターフェースを理解しよう
・確認問題5-☆1:モンスター捕獲ゲームを作ろう
・確認問題5-☆2:モンスターとのバトルゲームを作ろう
・確認問題5-☆3:マルバツゲーム(Tic-Tac-Toe)を作成しよう
Javaのクラスとは?定義とインスタンスの基本を初心者向けに解説

Javaのプログラミングにおいて「クラス」は、データやメソッドを一つにまとめる重要な概念です。
クラスを理解することで、より複雑なプログラムを簡潔に作成できるようになります。
ここではクラスの基本的な定義方法とその使い方について学びましょう。
クラスの役割と定義方法|Javaでの構文と実例
クラスはオブジェクト指向プログラミングにおいて「設計図」の役割を果たします。クラスそのものは何も仕事はしません。
クラスはフィールド(データ)とメソッド(処理)を持つことができ、これを使って実際にデータを扱うインスタンスを生成することができます。
Javaでクラスを定義する際にはclass
キーワードを使用します。基本的なクラス定義の構文は以下の通りです。
// ユーザーを表すクラスの定義 class User { // フィールド(データ) String name; int age; // メソッド(処理) void sayHello() { //挨拶を表示するsayHelloメソッドを定義 System.out.println("Hello, my name is " + name); } }
この例ではUser
という名前のクラスを定義しています。
name
とage
というデータ(フィールド)を持ち、sayHello
というメソッドで名前を表示します。
新しいクラスを定義する際には、毎回必ず書いているメインクラスの外に書きましょう。
Javaでインスタンスを生成して使う手順
クラスの定義ができたらそれを元に実際のデータを扱うための「インスタンス」を作成します。
インスタンスはクラスを基にした「実体」であり、クラスのフィールドやメソッドにアクセスするために使用します。
クラス = データや動作を書いた設計図。クラス自体は動作しない。
インスタンス = クラスから作られる、実際に動作するプログラム。
インスタンスを作成するにはnew
キーワードを使用します。
public class Main { //メインクラス public static void main(String[] args) { //メインメソッド // Userクラスのインスタンスを作成 User user1 = new User(); //User型の変数user1に、生成したUserインスタンスを代入 // フィールドに値を代入 user1.name = "Alice"; user1.age = 30; // Userクラス内のsayHelloメソッドの呼び出し user1.sayHello(); // 出力: Hello, my name is Alice } }
上記のコードではUser
クラスのインスタンスuser1
を作成し、フィールドname
とage
に値を代入しています。
さらにsayHello
メソッドを呼び出してメッセージを表示しています。これがクラスとインスタンスを使用した基本的な方法です。
クラスとインスタンスのポイント総まとめ

上の図はこれから学習していくJavaのオブジェクト指向に関わる内容を視覚的に分かりやすくまとめたものです。
この記事では「クラスの定義と使用」と「インスタンス生成」について学びました。
Javaでのクラスはデータとメソッドをまとめて表現するための基本的な構成要素です。
クラスを定義し、インスタンスを作成することで、複雑なデータ構造を効率よく扱えるようになります。
クラスの定義と使用を理解することで、Javaのプログラミングがさらに扱いやすくなります。
練習問題|Userクラスで名前と年齢を管理するプログラムを作成しよう

User
というクラスを定義し、その中にユーザーの名前と年齢を管理するフィールドとそれらを設定および表示するメソッドを用意してください。
Main
クラスの中で、User
クラスのインスタンスを生成し、ユーザー情報を設定してから表示させるプログラムを完成させましょう。
この問題の要件
以下の要件に従ってコードを完成させてください。
User
クラスを定義し、以下の内容を含むこと。String
型のフィールドname
とint
型のフィールドage
を持つこと。- 名前と年齢を設定するメソッド
setInfo(String name, int age)
を定義し、フィールドname
とage
に値を代入すること。 - ユーザー情報を表示するメソッド
displayInfo()
を定義し、name
とage
の内容を出力すること。
Main
クラスのmain
メソッド内で以下を実施すること。User
クラスのインスタンスを作成し、user1
という変数に格納すること。setInfo
メソッドを使用してuser1
のname
に「佐藤」、age
に25
を設定すること。displayInfo
メソッドを使用してuser1
の情報を出力すること。
ただし、以下のような実行結果となること。
名前: 佐藤 年齢: 25
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:Userクラスの定義
□ nameフィールドの宣言(String型)
□ ageフィールドの宣言(int型)
□ setInfoメソッドの定義
□ □ 引数nameをnameフィールドに代入
□ □ 引数ageをageフィールドに代入
□ displayInfoメソッドの定義
□ □ 「名前: ” + name」を出力
□ □ 「年齢: ” + age」を出力
2:Mainクラスの定義
□ mainメソッドの定義
□ □ Userクラスのインスタンスuser1を作成
□ □ setInfoメソッドを使ってuser1のnameに「佐藤」、ageに25を設定
□ □ displayInfoメソッドを使ってuser1の情報を出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
// ユーザー情報を表すクラス class User { // 名前と年齢のフィールド String name; int age; /*【穴埋め問題1】 ここに名前と年齢を設定するためのメソッドを定義し、引数のnameとageをそれぞれ対応するフィールドに代入するコードを書いてください。 */ /*【穴埋め問題2】 ここにユーザー情報を表示するためのメソッドを定義し、nameとageを表示するコードを書いてください。 */ } public class Main { public static void main(String[] args) { // Userクラスのインスタンス(実体)を生成 User user1 = new User(); // インスタンス user1 作成 // ユーザーの情報を設定 /*【穴埋め問題3】 user1のsetInfoメソッドを使用して、nameに「佐藤」、ageに25を設定するコードを書いてください。 */ // ユーザーの情報を表示 /*【穴埋め問題4】 user1のdisplayInfoメソッドを呼び出して、情報を出力するコードを書いてください。 */ } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
// ユーザー情報を表すクラス class User { // 名前と年齢のフィールド String name; int age; // 名前と年齢を設定するメソッド void setInfo(String name, int age) { this.name = name; // 引数のnameをフィールドnameに設定 this.age = age; // 引数のageをフィールドageに設定 } // ユーザー情報を表示するメソッド void displayInfo() { System.out.println("名前: " + name); System.out.println("年齢: " + age); } } public class Main { public static void main(String[] args) { // Userクラスのインスタンス(実体)を生成 User user1 = new User(); // インスタンス user1 作成 // ユーザーの情報を設定 user1.setInfo("佐藤", 25); // メソッドを使用して情報を設定 // ユーザーの情報を表示 user1.displayInfo(); // メソッドを使用して情報を出力 } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
クラス
User
の定義class User { String name; int age;
この部分では
User
というクラスを定義しています。クラスはオブジェクト指向プログラミングにおける「設計図」のようなもので、この設計図に基づいて複数のインスタンス(実体)を作成できます。
User
クラスにはname
とage
という二つのフィールドが定義されており、それぞれユーザーの名前と年齢を保存する役割を果たします。setInfo
メソッドvoid setInfo(String name, int age) { this.name = name; this.age = age; }
setInfo
はユーザーの名前と年齢を設定するメソッドです。メソッド内の
this
はクラスのフィールド(name
とage
)を指し、外部から渡された引数(name
とage
)をクラス内部のフィールドに代入しています。これによりインスタンスごとに異なるユーザー情報を設定することができます。
displayInfo
メソッドvoid displayInfo() { System.out.println("名前: " + name); System.out.println("年齢: " + age); }
displayInfo
メソッドはユーザーの情報を表示するためのメソッドです。System.out.println
を使ってname
とage
の内容を出力します。クラス
Main
の定義public class Main { public static void main(String[] args) {
Main
クラスはJavaプログラムのエントリーポイント(開始地点)です。main
メソッドはプログラムが実行されたときに最初に動作する部分であり、ここからUser
クラスを使用してユーザー情報の設定や表示を行います。インスタンスの生成と
setInfo
メソッドの呼び出しUser user1 = new User(); user1.setInfo("佐藤", 25);
User
クラスのインスタンスをnew User()
で作成し、変数user1
に代入しています。このようにして
User
クラスを具体的なオブジェクト(インスタンス)として使用することができます。その後
setInfo
メソッドを呼び出し、名前と年齢をそれぞれ「佐藤」と25
に設定しています。これにより
user1
というインスタンスにユーザー情報が登録されます。displayInfo
メソッドの呼び出しuser1.displayInfo();
displayInfo
メソッドを呼び出すことで設定されたユーザー情報を表示します。このコードが実行されるとユーザーの名前と年齢がコンソールに出力され、設定した情報が正しく反映されていることが確認できます。
まとめ
このコードではJavaのクラスとインスタンスを使ってユーザー情報を管理する方法を学びました。
クラスの定義とメソッドの使い方、インスタンスの生成とフィールドの設定方法を理解することで、Javaのオブジェクト指向プログラミングの基礎をしっかりと習得できたと思います。
クラスは複雑なデータを整理し、再利用可能なコードを作成するための強力なツールです。
次のステップでは、さらに多機能なクラスを作成してプログラムの幅を広げていきましょう!