【JAVA】レッスン5-01:クラスの基本を確認しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:クラスの定義と使用

この記事の練習問題で使用する知識:
基礎構文、制御構造、メソッド、コレクション(レッスン1~4)クラスの定義と使用コンストラクタカプセル化クラスメンバとインスタンスメンバメソッドのオーバーライドクラスの継承抽象クラスインターフェース

<<前のページ 問題集Top 次のページ>>

JAVAの文法「クラスの定義と使用」とは

ここではクラスの定義と使用の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。

Javaのプログラミングにおいて「クラス」は、データやメソッドを一つにまとめる重要な概念です。

クラスを理解することで、より複雑なプログラムを簡潔に作成できるようになります。

ここではクラスの基本的な定義方法とその使い方について学びましょう。

クラスの定義とは?

クラスはオブジェクト指向プログラミングにおいて「設計図」の役割を果たします。クラスそのものは何も仕事はしません。

クラスはフィールド(データ)とメソッド(処理)を持つことができ、これを使って実際にデータを扱うインスタンスを生成することができます。

Javaでクラスを定義する際にはclassキーワードを使用します。基本的なクラス定義の構文は以下の通りです。

// ユーザーを表すクラスの定義
class User {
    // フィールド(データ)
    String name;
    int age;
    
    // メソッド(処理)
    void sayHello() { //挨拶を表示するsayHelloメソッドを定義
        System.out.println("Hello, my name is " + name);
    }
}

この例ではUserという名前のクラスを定義しています。

nameageというデータ(フィールド)を持ち、sayHelloというメソッドで名前を表示します。

新しいクラスを定義する際には、毎回必ず書いているメインクラスの外に書きましょう。

インスタンスの作成と使用

クラスの定義ができたらそれを元に実際のデータを扱うための「インスタンス」を作成します。

インスタンスはクラスを基にした「実体」であり、クラスのフィールドやメソッドにアクセスするために使用します。

クラス = データや動作を書いた設計図。クラス自体は動作しない。
インスタンス = クラスから作られる、実際に動作するプログラム。

インスタンスを作成するには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を作成し、フィールドnameageに値を代入しています。

さらにsayHelloメソッドを呼び出してメッセージを表示しています。これがクラスとインスタンスを使用した基本的な方法です。

まとめ

【初心者向け】Javaのオブジェクト指向を分かりやすくまとめた概念図。 特にクラスの継承、オーバーライド、抽象クラス、インターフェース、インスタンス生成の関係性を視覚的に理解できるようまとめている。

上の図はこれから学習していくJavaのオブジェクト指向に関わる内容を視覚的に分かりやすくまとめたものです。

この記事では「クラスの定義と使用」と「インスタンス生成」について学びました。

Javaでのクラスはデータとメソッドをまとめて表現するための基本的な構成要素です。

クラスを定義し、インスタンスを作成することで、複雑なデータ構造を効率よく扱えるようになります。

クラスの定義と使用を理解することで、Javaのプログラミングがさらに扱いやすくなります。

JAVA練習問題5-1_ユーザー情報を管理するクラスを作成しよう

Userというクラスを定義し、その中にユーザーの名前と年齢を管理するフィールドとそれらを設定および表示するメソッドを用意してください。

Mainクラスの中で、Userクラスのインスタンスを生成し、ユーザー情報を設定してから表示させるプログラムを完成させましょう。

この問題の要件

以下の要件に従ってプログラムを完成させてください。

  1. Userクラスを定義し、以下の内容を含むこと。
    • String型のフィールドnameint型のフィールドageを持つこと。
    • 名前と年齢を設定するメソッドsetInfo(String name, int age)を定義し、フィールドnameageに値を代入すること。
    • ユーザー情報を表示するメソッドdisplayInfo()を定義し、nameageの内容を出力すること。
  2. Mainクラスのmainメソッド内で以下を実施すること。
    • Userクラスのインスタンスを作成し、user1という変数に格納すること。
    • setInfoメソッドを使用してuser1nameに「佐藤」、age25を設定すること。
    • 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(); // メソッドを使用して情報を出力
    }
}

正解コードの解説

このコードでは、クラスの定義と使用について学びます。

Javaのクラスの構造とインスタンス化の基礎を理解するのに役立つ内容です。

クラスUserの定義

class User {
    String name;
    int age;

この部分ではUserというクラスを定義しています。

クラスはオブジェクト指向プログラミングにおける「設計図」のようなもので、この設計図に基づいて複数のインスタンス(実体)を作成できます。

Userクラスにはnameageという二つのフィールドが定義されており、それぞれユーザーの名前と年齢を保存する役割を果たします。

setInfoメソッド

void setInfo(String name, int age) {
    this.name = name;
    this.age = age;
}

setInfoはユーザーの名前と年齢を設定するメソッドです。

メソッド内のthisはクラスのフィールド(nameage)を指し、外部から渡された引数(nameage)をクラス内部のフィールドに代入しています。

これによりインスタンスごとに異なるユーザー情報を設定することができます。

displayInfoメソッド

void displayInfo() {
    System.out.println("名前: " + name);
    System.out.println("年齢: " + age);
}

displayInfoメソッドはユーザーの情報を表示するためのメソッドです。

System.out.printlnを使ってnameageの内容を出力します。

クラス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のオブジェクト指向プログラミングの基礎をしっかりと習得できたと思います。

クラスは複雑なデータを整理し、再利用可能なコードを作成するための強力なツールです。

次のステップでは、さらに多機能なクラスを作成してプログラムの幅を広げていきましょう!

<<前のページ 問題集Top 次のページ>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る