TOPシステム開発> インスタンスを生成してみよう
はじめてのJava
はじめてのJava入門

第2回:何はなくともまずクラス

著者:サイオステクノロジー  片桐 一宗   2007/8/20
前のページ  1  2  3
インスタンスを生成してみよう

   では次に、インスタンスメソッドを使用してみましょう。先ほどstaticメソッドからインスタンスメソッドを呼び出すためには、クラスをインスタンス化する必要があると説明しました。ここで取り上げるクラスは、実行されると標準出力(コンソール)に「サイオステクノロジーさん」と表示するものです。
public class Sample {
    private String suffix = "さん";
    public String addSuffix(String name) {
        String returnName = name + suffix;
        return returnName;
    }
    
    public static void main(String[] args) {
        Sample obj1 = new Sample();
        String printName = obj1.addSuffix("サイオステクノロジー");
        System.out.println(printName);
    }
}


1.private String suffix = "さん";

   Sampleクラスのインスタンス変数です。privateキーワードによって、この変数は他のクラスから参照することができません(Sampleクラス内であればアクセスできます)。この変数の初期値は"さん"という文字列になります。


2.public String addSuffix(String name)

   Sampleクラスのインスタンスメソッドです。引数としてStringオブジェクトが必要で「返り値はStringオブジェクトである」と定義しています。


3.String returnName = name + suffix;

   メソッド内でのみアクセスが可能なローカル変数を定義しています。この例の場合、String型の変数名returnNameの初期値は「メソッド引数nameとインスタンス変数suffixを文字連結したものである」と定義しています(Javaの場合、文字連結には「+」が使用可能です)。


4.return returnName;

   メソッドの処理を終了して呼び出し元に返す値を定義します。メソッドが返す値の型を定義している場合、必ず値を返す必要があります。この例の場合、Stringの値を返さなくてはいけません。voidが指定されている場合は値を返す必要はありませんが、returnが記述されている個所で処理を終了させることができます。


5.public static void main(String[] args)

   javaコマンドにて最初に呼び出されるメソッドです。


6.Sample obj1 = new Sample();

   newキーワードを使用することで、Sample型のインスタンスを生成します。「型 任意の変数名 = new クラス名([引数リスト])」の形式で定義します。

   newキーワードの次の式は「コンストラクタ」と呼ばれます。コンストラクタとは、クラスのインスタンスを生成する特殊なメソッドのことです。Sampleクラスにはコンストラクタが定義されていないので、Javaコンパイラによって規定のコンストラクタが自動的に呼び出されます。

   インスタンス生成時に処理を行いたい、もしくは初期値を設定したい場合は、コンストラクタを別途作成する必要があります。またコンストラクタはオブジェクトの参照を返します。オブジェクトが確保されたメモリのアドレスのようなものですが、Javaプログラム上では、その参照に対して直接操作することはできません。

   ここでは返された参照をSample型のローカル変数obj1に格納し、Sampleクラスのインスタンス変数やインスタンスメソッドは、obj1を介してアクセスします。


7.String printName = obj1.addSuffix("サイオステクノロジー");

   Sample型のローカル変数obj1よりインスタンスメソッドaddSuffixを引数"サイオステクノロジー"で呼び出します。その返り値をString型のローカル変数printNameに格納します。


8.System.out.println(printName);

   標準出力にString型のローカル変数printNameに格納されている文字列を表示します。


まとめ

   今回は簡単なJavaプログラムを作成してオブジェクト指向に触れてみました。クラスとインスタンスの関係や変数の特長がご理解いただけたでしょうか?

   次回はオブジェクト指向について、もう少し掘り下げてみます。

前のページ  1  2  3


株式会社システムインテグレータ 安治
著者プロフィール
サイオステクノロジー株式会社  片桐 一宗
ソフトハウスでC、C++、Javaでの開発経験を積み、テンアートニ(現サイオステクノロジー)入社。Webシステムの設計・開発・保守からプロジェクトリーダーまでこなした後、現在、品質管理チームの一員を担当。サイオステクノロジーのシステム構築サービス品質向上に向け、日々奮闘中。


INDEX
第2回:何はなくともまずクラス
  プログラムを作成する
  staticとインスタンス
インスタンスを生成してみよう