JAVAの初心者向け問題2-4:クラスの基本を確認しよう
この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型とプリミティブ型、四則演算と論理演算、入力と出力(Scannerクラス)、配列、分岐処理(if、if~else、switch)、繰り返し処理(for、while、do~while
【レベル2の知識】
メソッドの定義と呼び出し、メソッドの戻り値、メソッドのオーバーロード、例外処理(try-catch文、throws、throw)、クラスの定義と使用、インスタンス、コンストラクタ
<<前の問題 | 問題集Top |
次の問題>> |
JAVAの文法「クラスの定義と使用」とは
ここではクラスの定義と使用の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
クラスは、Javaプログラムの基本的な構造であり、オブジェクト指向プログラミングの中核となる部分です。
この記事では、Javaでのクラスの定義方法と使用方法について、初心者向けにわかりやすく解説します。
クラスとは?
Javaにおけるクラスは、オブジェクトを生成するための設計図のようなものです。
クラスには属性(データ)とメソッド(機能)が含まれており、それらをまとめてオブジェクトとして扱います。
クラスの構成要素:
- フィールド: クラスが持つデータ。例: 名前や年齢。
- メソッド: クラスが持つ機能。例: データを処理したり、結果を返したりする機能。
クラスの定義
まず、Javaでクラスを定義する基本的な構文を見てみましょう。
// クラスの定義 public class Person { // フィールド(属性) String name; int age; // コンストラクタ(オブジェクトを生成する際に呼ばれるメソッド) public Person(String name, int age) { this.name = name; // thisはこのクラスのフィールドを指す this.age = age; } // メソッド(動作や機能) public void introduce() { System.out.println("私は " + name + " で、年齢は " + age + " 歳です。"); } }
public class Person
: ここで新しいクラスPerson
を定義しています。public
は他のクラスからアクセスできることを意味します。- フィールド:
name
とage
はこのクラスが持つ属性(データ)です。 - コンストラクタ: クラスからオブジェクトを作るときに、初期設定をするために使う特別なメソッドです。
- メソッド:
introduce()
メソッドは、このクラスが持つ動作を定義しており、名前と年齢を表示します。
クラスの使用
次に、この定義したクラスを使って実際にオブジェクトを生成し、動作を確認してみましょう。
public class Main { public static void main(String[] args) { // Personクラスのオブジェクトを生成 Person person1 = new Person("太郎", 25); // オブジェクトのメソッドを呼び出す person1.introduce(); // 「私は 太郎 で、年齢は 25 歳です。」と表示されます。 } }
new Person("太郎", 25)
: ここでPerson
クラスのオブジェクトperson1
を生成しています。このオブジェクトは「太郎」という名前と25歳という年齢の情報を持っています。person1.introduce()
: このメソッドを呼び出すことで、Person
クラスのintroduce()
メソッドが実行され、名前と年齢が表示されます。
オブジェクト指向の基本概念
クラスとオブジェクトを理解するためには、オブジェクト指向の基本的な考え方も知っておく必要があります。
- オブジェクト: クラスをもとに作られた実体。クラスが設計図なら、オブジェクトはその設計図から作られた具体的なモノです。
- カプセル化: クラスの内部のデータを隠し、外部から直接アクセスできないようにすること。これにより、クラスの外部からフィールドを勝手に変更されるのを防ぎます。
- 継承: あるクラスが他のクラスの機能を引き継ぐことができる仕組み。これにより、再利用性が高まり、コードの重複を避けることができます。
- ポリモーフィズム(多態性): 同じメソッド名でも、異なるクラスがそれぞれ違う動作を実装できる仕組み。
まとめ
Javaにおけるクラスは、データと機能を一つにまとめる強力なツールです。
今回の記事では、クラスの基本的な定義と使い方、そして実際にオブジェクトを生成して使う方法について学びました。
クラスを使いこなせるようになると、Javaプログラミングがさらに楽しくなります。これからどんどん練習して、クラスの概念をしっかりと身に付けましょう!
JAVA練習問題2-4_学生の情報を管理するクラスを作ろう
次のプログラムは、学生の情報を管理するためのクラスを定義し、学生の名前と年齢を設定し、その情報を表示するものです。このプログラムを完成させてください。
この問題の要件
以下の要件に従ってプログラムを完成させてください。
Student
という名前のクラスを定義すること。Student
クラスには、以下のフィールドとメソッドを定義すること。- フィールド:
name
(学生の名前を格納する)、age
(学生の年齢を格納する) - メソッド:
setName(String name)
: 名前を設定するメソッドsetAge(int age)
: 年齢を設定するメソッドdisplayInfo()
: 名前と年齢を表示するメソッド
- フィールド:
Main
クラスのmain
メソッドで、以下を実行すること。Student
クラスのインスタンスを作成する- 作成したインスタンスに対して名前と年齢を設定する
- 設定した情報を表示する
なおメインメソッドは以下の通りとします。この外側にStudentクラスを作成しましょう。
----- ↓mainメソッド↓ -----
public static void main(String[] args) { // Studentクラスのインスタンスを作成 Student student = new Student(); // 学生の名前と年齢を設定 student.setName("Alice"); student.setAge(20); // 学生の情報を表示 student.displayInfo(); }
----- ↑mainメソッド↑ -----
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
Name: Alice Age: 20
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.Studentクラスの定義
1-1. フィールドの定義
1-1-1. String nameフィールドの定義
1-1-2. int ageフィールドの定義
1-2. メソッドの定義
1-2-1. setNameメソッドの定義
1-2-1-1. nameフィールドに引数の値を設定
1-2-2. setAgeメソッドの定義
1-2-2-1. ageフィールドに引数の値を設定
1-2-3. displayInfoメソッドの定義
1-2-3-1. 学生の名前を表示
1-2-3-2. 学生の年齢を表示
2.Mainクラスの定義
2-1. mainメソッドの定義
2-1-1. Studentクラスのインスタンスを作成
2-1-2. setNameメソッドを使用して名前を設定
2-1-3. setAgeメソッドを使用して年齢を設定
2-1-4. displayInfoメソッドを使用して情報を表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
// 学生の情報を管理するクラス class Student { // フィールド(学生の名前と年齢) String name; int age; // 学生の名前を設定するメソッド void setName(String name) { ***ここに学生の名前を設定するコードを書いてください*** } // 学生の年齢を設定するメソッド void setAge(int age) { ***ここに学生の年齢を設定するコードを書いてください*** } // 学生の情報を表示するメソッド void displayInfo() { ***ここに学生の名前と年齢を表示するコードを書いてください*** } } public class Main { public static void main(String[] args) { // Studentクラスのインスタンスを作成 Student student = new Student(); // 学生の名前と年齢を設定 student.setName("Alice"); student.setAge(20); // 学生の情報を表示 student.displayInfo(); } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
// 学生の情報を管理するクラス class Student { // フィールド(学生の名前と年齢) String name; int age; // 学生の名前を設定するメソッド void setName(String name) { this.name = name; // 引数で受け取った名前をフィールドに設定 } // 学生の年齢を設定するメソッド void setAge(int age) { this.age = age; // 引数で受け取った年齢をフィールドに設定 } // 学生の情報を表示するメソッド void displayInfo() { // 学生の名前と年齢を表示 System.out.println("Name: " + name); System.out.println("Age: " + age); } } public class Main { public static void main(String[] args) { // Studentクラスのインスタンスを作成 Student student = new Student(); // 学生の名前と年齢を設定 student.setName("Alice"); student.setAge(20); // 学生の情報を表示 student.displayInfo(); } }
********************
コードの解説
このJavaコードでは、「Student」というクラスを使って、学生の名前と年齢を管理しています。以下、各部分を詳しく解説していきます。
クラスの定義
class Student { String name; int age; }
最初に Student
クラスを定義しています。クラスとは、オブジェクト(ここでは「学生」)の設計図のようなものです。
String name
と int age
は、それぞれ「名前」と「年齢」を保存するためのフィールドです。String
は文字列型で、名前を表し、int
は整数型で年齢を表します。
メソッドの定義
void setName(String name) { this.name = name; }
このメソッドは、学生の名前を設定するためのメソッドです。
setName
メソッドでは、引数として渡された name
(メソッドのパラメータ)を、クラス内の name
フィールドに代入しています。
this.name
としているのは、クラス内の name
フィールドと、引数の name
を区別するためです。同様に、次のメソッドは年齢を設定します。
void setAge(int age) { this.age = age; }
学生の情報を表示するメソッド
void displayInfo() { System.out.println("Name: " + name); System.out.println("Age: " + age); }
この displayInfo
メソッドは、学生の名前と年齢を表示する役割を持ちます。
System.out.println
は、コンソールにテキストを出力するための標準的な方法です。
name
と age
はそれぞれ、クラスのフィールドに格納された情報を表示します。
メインメソッドの説明
public class Main { public static void main(String[] args) { Student student = new Student(); student.setName("Alice"); student.setAge(20); student.displayInfo(); } }
public class Main
は、プログラムのエントリーポイントとなるクラスです。この中で main
メソッドが実行されます。
Student student = new Student();
でStudent
クラスのインスタンス(オブジェクト)を作成しています。new
キーワードを使うことで、クラスの設計図に基づいた新しい「学生」オブジェクトを作成しています。student.setName("Alice");
では、先ほど定義したsetName
メソッドを使って、学生の名前を “Alice” に設定しています。- 同様に、
student.setAge(20);
で、学生の年齢を 20 に設定しています。 - 最後に、
student.displayInfo();
を使って、学生の名前と年齢をコンソールに表示しています。
クラスの定義と使用について
クラスは、オブジェクト指向プログラミングの基本です。今回の例では「Student」クラスを定義し、そのクラスのフィールドやメソッドを使って学生の情報を管理しています。
クラスは、データ(フィールド)とそのデータに対して行う操作(メソッド)を一つにまとめたものです。
このように、オブジェクト指向では、データとその処理をまとめて扱うことで、コードを整理しやすく、再利用可能にします。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。