Javaプログラミングを行う上で、必ず理解しておく必要があるのが「クラス」です。
本記事では、Javaの「クラス」について考え方と使い方をサンプルコードを交えながらご紹介していきます。
Javaのクラスとは?
クラスは「設計図」とよく例えられますが、クラス単体で利用するのではなく、クラスから「インスタンス」と呼ばれる実体を作成して利用します。
クラスには何が記述されているの?
では設計図であるクラスには何が記述されているのでしょうか?
大きく分けて「フィールド」と「メソッド」の2つが定義されます。
フィールドはクラスで利用するデータを保管する変数が定義されます。
メソッドでは、クラスで行う処理内容が記述され、データの変換などを行います。
クラスとインスタンスの違いって何?
クラスとインスタンスは「設計図」と「実体」の違いとなります。
よく例えられるものとして「家の設計図(クラス)」と「実物の家(インスタンス)」の違いがあげられます。
「家の設計図(クラス)」だけでは実際に住んだり、利用することは出来ませんが「実物の家(インスタンス)」を生成することで利用することが可能になります。
また同じ「家の設計図(クラス)」から「実物の家(インスタンス)」を複数作った場合、出来上がるものは全く同じですが、実体としては複数出来上がり全く別ものとなります。
Javaでのクラスの使い方を把握しよう!
ここからは基本的なJavaクラスの使い方についてサンプルコードを交えながらご紹介していきたいと思います。
クラスの基本構文
まずは基本的なクラスの記述方法について理解していきましょう。
下記のサンプルコードをご確認頂き順に説明していきたいと思います。
class Sample1 { // ※1 public String name; // ※2 public int age; // ※2 // ※3 public Sample1(String str, int age) { this.name = str; this.age = age; } // ※4 public void execute() { System.out.println("ユーザーの名前は " + this.name + "です。"); System.out.println("ユーザーの年齢は " + this.age + "です。"); } }
クラス名
まず※1に定義している「Sample1」がクラス名となります。
class クラス名 {}
{}の間にクラスに定義するフィールドやメソッドなどを記述していく形となります。
フィールド
※2に定義しているのが「フィールド」でデータを保管する変数となります。
サンプルコードではname(名前)とage(年齢)を保管するようの変数を定義しました。
コンストラクタ
※3はコンストラクタと呼ばれるインスタンスを生成する際に呼び出されるものです。
コンストラクタは特に処理が必要ない場合、定義しなくても問題ありません。
サンプルコードの場合は引数を2つ受け取り、名前と年齢情報をインスタンスのフィールドに格納するようなコンストラクタを作成しています。
コンストラクタは「クラス名と同じ」である必要があるため、サンプルの場合には「Sample1」というメソッドがコンストラクタとなります。
メソッド
最後に※4で定義しているのが「メソッド」となり処理内容を記述しています。
サンプルコードの場合はフィールドに設定された名前と年齢を出力するコードを記述しています。
インスタンスの生成方法
上述しているようにクラスで「フィールド」や「メソッド」を定義しただけでは、実際に利用することは出来ません。
実際に利用するための実体「インスタンス」の生成方法をご紹介していきます。
クラス名 変数 = new クラス名(引数);
上記のようにnew演算子を利用してクラス名を指定し、同じクラス名の変数に格納するだけです。
実際に上記サンプルコードの「Sample1」をインスタンス化すると下記のようになります。
Sample1 sample = new Sample1("ポテパン", 20);
「Sample1」クラスではコンストラクタの引数に「名前」と「年齢」を設定するように作成しましたので、「名前=”ポテパン”」と「年齢=20」を設定しています。
作成されたインスタンスは「sample」と名付けた変数に格納されることになります。
また、実際に作成されたインスタンスの「フィールド」や「メソッド」にアクセスしたい場合は下記のように記述します。
インスタンスの変数名.フィールド名; インスタンスの変数名.メソッド名();
実際のJavaサンプルコードで確認してみよう
上記でクラスの定義とインスタンスの作成方法を学習したので、実際に動くコードはどのようになるのか確認していきましょう。
まずはサンプルコードをご確認ください。
public class Main { public static void main(String[] args) { Sample1 userA = new Sample1("ポテパン", 20); Sample1 userB = new Sample1("テスト", 26); System.out.println("userAの出力結果です。"); userA.execute(); System.out.println("userBの出力結果です。"); userB.execute(); } } class Sample1 { public String name; public int age; public Sample1(String str, int age) { this.name = str; this.age = age; } public void execute() { System.out.println("ユーザーの名前は " + this.name + "です。"); System.out.println("ユーザーの年齢は " + this.age + "です。"); } }
上記のサンプルコードを実行した結果が下記の通りとなります。
userAの出力結果です。 ユーザーの名前は ポテパンです。 ユーザーの年齢は 20です。 userBの出力結果です。 ユーザーの名前は テストです。 ユーザーの年齢は 26です。
Javaではまず最初に呼び出されるメソッドとして、MainクラスのMainメソッドという決まりがあります。
サンプルコードではMainメソッドの中で、作成した「Sample1」クラスのインスタンスを作成し、「execute」メソッドを実行しています。
インスタンス生成時に指定した名前と年齢がしっかりと表示されていることがご確認頂けます。
また、インスタンスによって出力されている内容が異なることにも注目してください。
同じクラスから生成されたインスタンスですが、インスタンス生成時の引数を変えているため、出力結果として表示される内容は異なることがご確認頂けます。
さいごに:Java以外のプログラムでもクラスの理解は役に立つ
本記事では、Javaの必須知識として「クラス」の基本的な考え方と使い方をご紹介してきました。
「クラス」の概念はJavaだけに限らず、オブジェクト指向と呼ばれるプログラミング言語を利用する際に共通して利用出来る知識となります。
基本的な部分の説明だけをなるべく分かりやすくご紹介していますので、しっかりと理解した上でご自身のプログラムに応用出来るよう挑戦してみてください。
この考えはプログラムをする際に非常に大事な概念になりますのでしっかりと理解しておきましょう。