【Java】クラス化について
はじめに
クラスとは、プログラムを処理、実行するためにまとめたオブジェクトで、 簡潔に例えると「物を作成するための設計図」です。 このクラス化された設計図を使用し、インスタンス(オブジェクト)を作成します。 クラス化された設計図には「フィールド」と「メソッド」の2種類の情報を記述していきます。 フィールドはインスタンスの情報を表し、メソッドは特定の処理を表します。 下記Sampleコードでは以下の条件でクラス化を行います。
1. クラスにname, ageの2つのフィールドを定義。(フィールドはインスタンスごとに固有の値を保持)
2. クラスにshow()メソッドを定義。
※「showメソッド」はインスタンスに設定された2つのフィールド「name」と「age」を表示するメソッドです。
※フィールドと同様にメソッドも複数保持が可能。
2.
3. //フィールドの宣言
4. String name;
5. int age;
6.
7. //メソッド宣言
8. void show(){
9. System.out.println(“私の名前は” + name + “です。”);
10. System.out.println(“年齢は” + age + “です。”);
11. }
12. }
13.
インスタンス
Javaはオブジェクト指向のプログラミング言語です。 オブジェクト指向のプログラミング言語を実行する際はクラス化され処理がまとめたクラスのインスタンスを生成する必要があります。 また、生成したクラスのインスタンスから、そのクラスのメンバ変数の参照や、メソッドの呼び出しを行います。 クラス化された中からメソッドを呼び出す際は、以下のように記述します。
2.
3. // メソッドの宣言・定義
4. void methodSample(){
5. 実行処理...
6. }
7.
8. public static void main(String[] args) {
9.
10. //オブジェクトの生成
11. Sample01 c = new Sample01();
12.
13. //メソッドの呼出し
14. c.methodSample();
15. }
16. }
クラス化されたクラスのインスタンスを生成する方法は変数を宣言する方法と酷似しており、 クラス名記述後、インスタンス名を記述します。 インスタンスにはnew演算子を用いて、生成するインスタンスの格納を行います。 なお、クラス化されたクラスのインスタンスは異なるインスタンス名で複数生成することが可能です。
クラスの基本的な使用方法
1. 参照するクラスのオブジェクト変数を生成
2. クラスのメンバ変数の参照
3. メソッドの呼出し
4. 取得した値の出力
「Sample.java」「Main.java」ファイルを作成し、それぞれ以下のプログラムの記述を行います。
■サンプルコード
1. // Sample.java
2. class Sample {
3. // メンバ変数
4. public String name = "こんにちわ ";
5.
6. // メソッド
7. public String testMethod(){
8. return "文字列の出力します。";
9. }
10. }
11.
12. // Main.java
13. public class Main {
14.
15. public static void main(String[] args) {
16. //クラスのオブジェクトを生成
17. Sample s = new Sample();
18.
19. //メンバ変数を参照する
20. String str1 = s.name;
21.
22. //メソッドの呼出し
23. String str2 = s.testMethod();
24.
25. //結果を出力
26. System.out.println(str1 + str2);
27. }
28.
29. }
ファイル保存後、プログラムのコンパイルおよび実行。
■コンパイル
コンパイル成功後、Main.classとSample.classが作成されます。 実行を行う際は、コマンドラインで以下のように実行するとプログラムが実行処理が行われます。
■実行
上記のようにクラスのインスタンスを生成し、クラスのメンバやメソッドを参照するのが、クラスの基本的な使用方法となります。
抽象クラス(abstract)クラス
抽象クラス(abstract)クラスとは、抽象メソッドを1つ以上持つクラスのことです。 抽象メソッドとは実装を持たない、シグネチャー(メソッド名、引数の型、引数の数)と戻り値の型のみを定義するメソッドのことです 具体的には、以下の通りです。
1. abstract class AbstractClass {
2. abstract void abstractMethod(int num, String str);
3.
4. void nonAbstractMethod() {
5. System.out.println("非抽象メソッドからの出力");
6. }
7. }
8.
9. public class Main extends AbstractClass {
10.
11. public static void main(String[] args) {
12. Main m = new Main();
13. m.abstractMethod(10, "Sample");
14. }
15.
16. public void abstractMethod(int num, String str) {
17. System.out.println("引数int num = " + num + " / 引数String str = "+ str);
18. }
19.
20. }
抽象メソッドを使用するには、抽象クラスを「extends」句で継承しサブクラスで具象クラス化する必要があります。 また、「抽象メソッドは必ず全てオーバーライドを行う」、「直接インスタンス化は行えない」などのルールが存在します。
まとめ
いかがでしたでしょうか。クラスとはクラス化された設計図を使用し、インスタンス(オブジェクト)を作成するものです。 Javaにおける基本的な考え方なので必ず理解しておく必要があります。興味のある方は理解を深めておくと良いでしょう。