Java入門ガイド

05.クラスとメソッド

当コーナーはJavaの基本的な事項を紹介していくものです。

クラスとメソッド

Javaプログラマーはクラスとメソッドを作成することが第一の仕事です。ここでは簡単なJavaのクラスを元にその役割について説明していきます。
まずクラスとはデータが格納される変数を定義したり、処理機能を記述した一つの塊(メソッド) を記述したものです。またはインスタンス(後述)の雛形とも言われます。
Javaプログラムには、最低でも一つのmain() メソッドを含むクラスが必要です。
ここまで作成してきたSampleXXのプログラムもそれぞれがクラスです。
複数のクラスを定義して部品化することも可能です。

まずは以下のコードを記述し「Sample05Sub.java」と言う名前で保存してください。

import java.util.Date;

/* 
 * クラス名 :Sample05Sub.java 
 * 
 * 作成日 :2006/12/01 
 * 作成者 :アイオステクノロジー 
 * 最終更新日:2006/12/01 
 * 最終更新者:アイオステクノロジー 
 * 
 */ 
public class Sample05Sub{ 
    public String answerDate(String str){ 
        Date date = new Date(); 
        String answer = str + date.toString(); 
        return answer; 
    } 
}

ここで、import java.util.Date; や Date date = new Date(); など見慣れない言葉が出てきましたが後ほど説明します。
次にメインのクラスを作ります。以下のコードを記述し「Sample05.java」と言う名前で保存してください。

/* 
 * クラス名 :Sample05.java 
 * 
 * 作成日 :2006/12/01 
 * 作成者 :アイオステクノロジー 
 * 最終更新日:2006/12/01 
 * 最終更新者:アイオステクノロジー 
 * 
 */ 
/** 
 * Sample05のメインクラス。 
 */ 
public class Sample05 { 
    /** 
      * メインメソッド 
      */ 
    public static void main(String[] args) { 
        Sample05Sub sample05sub = new Sample05Sub(); 
        String todayStr = sample05sub.answerDate("今日は"); 
        System.out.println(todayStr); 
    } 
}

コマンドプロンプトでコンパイル後、「java Sample05]と入力し実行してみます。

obj_Javastart_class001

今日はFri Dec 01 15:34:09 JST 2006と出力されました。

まず、このプログラムの役割を説明します。
①Sample05.javaでサブクラスとなる、Sample05Subのインスタンスをsample05subと言う名前で生成する。
②String型の変数todayStr に対してsample05subのanswerDateメソッドを呼び出す。
この時にSample05Sub.javaが使われます。
メソッドには引数として”今日は”と言うString型の値を与えています。

③sample05subのanswerDateメソッドは、まずDate型のインスタンスdateと言う名前で生成します。
String型の変数answerに、メソッドが受け取ったString型の変数strとdateのtoString()メソッドを
結合して代入し、呼び出された側に返却します。

④Sample05は受け取ったString変数をtodayStrに代入し、System.out.println()で内容を表示する。

  • Sample05Sub sample05sub = new Sample05Sub();と言うコードのことをインスタンス化する、またはnew演算子を利用すると言います。new演算子でメモリ領域を確保し、インスタンスを使える状態にします。
    インスタンスとはクラスの実体をさします。
  • String todayStr = sample05sub.answerDate(“今日は”);と言うコードでインスタンスが持つメソッドを実行します。
    左辺のString todayStr にメソッドを実行した際に返って来る値が代入されます。
    右辺のsample05sub.answerDate(“今日は”)はメソッドの呼び出しです。
    インスタンス名.メソッド名(引数)の形でコーディングします。
  • さて呼び出される側のSample05Sub.javaですが、import java.util.Date;と言うコードがあります。
    この構文は一般的にはimport文と呼ばれています。
    Java APIに含まれるクラスを利用するにはこのimport文を使って「このプログラムではこのクラスを使います。」と言うことを宣言します。
  • API(Application Programmer Interface)とはプログラムを書くときに使用するライブラリ群のことです。
    数多くのクラスが提供されています。
  • Sample05Sub.javaではDate date = new Date();と言うコードがあるので「Dateクラスを使います。」と言う宣言をおこなっているのです。
  • String型の変数answerに 引数str と dateオブジェクトのtoString()メソッドを利用して「曜日 月 日 時 分 秒 タイムゾーン 西暦」 を取得しています。
    ”今日は”と日付のStringオブジェクトとを結合しています。
    そしてその変数answerをreturn文を用いてメインクラスに返却しています。
  • Sample05.javaのSystem.out.println(todayStr);でtodayStrの内容の「今日はFri Dec 01 15:34:09 JST 2006」が出力されます。