JavaA2Z

KAB-studio > プログラミング > JavaA2Z > メソッドとは

メソッド

日本語 関数
英語 method
ふりがな めそっど
フリガナ メソッド

解説

プログラムの処理のひと塊。
変数宣言、計算、文字列の書き換え、ファイル入出力、画面表示等の処理を記述したものを「メソッド」という。いわば、プログラムの本体。
 
クラス内に「戻り値 メソッド名( 引数 引数変数){ 実装 }」という書式でメソッドを作ることができる。
このうち「戻り値 メソッド名( 引数 引数変数)」までの部分を「メソッドの宣言」もしくは「メソッドのシグネチャー」と呼ぶ。
{ 実装 }」の部分を「メソッドの定義」もしくは「メソッドの実装」と言う。
 
メソッドは他のメソッドから呼び出すことができる。呼び出し方法は「戻り値を受ける変数 = メソッド名( 引数に渡す値 );」という書式で呼び出すことができる。逆に言うと、この「呼び出し方法」を決定しているのがメソッドの「宣言部」と言える。
呼び出し時に「引数に渡す値」を渡すことで、値を渡すことができる。
呼び出し後、メソッド内の「実装」が、上から順に処理される。また、「引数に渡す値」は「引数変数名」変数にコピーされ「実装」内で使用することができる。
メソッドは、「実装」の最下端、つまり「}」まで来た時か、returnを使用したときに終了する。
戻り値void以外の場合、メソッドの終了時にreturnで値を返すことができる。メソッドの呼び出し元に戻った際、「メソッド名( 引数に渡す値 )」がそのまま「returnに渡した値」に置き換わり、「戻り値を受ける変数」に代入することができる。
 
メソッドは、メソッド内で宣言してメソッドから抜けると消える「ローカル変数」と、クラスの中に持つ「フィールド」のふたつの変数を使用することができる。
ローカル変数」はメソッド内でのみ使用するために存在する変数である。内部処理をうために使用される。
フィールド」は同じクラスのどのメソッドからもアクセスできる変数である。特に普通のフィールド(非staticフィールド)はインスタンスがある間は存在し続けるため、メソッドはフィールドインスタンスの「情報」を持つ変数として使用することができる。
 
メソッドには、普通のメソッドと「staticメソッド」がある。
staticメソッドは、インスタンスを作らずにクラスから直接呼べる反面、ポリモーフィズムしない、非staticフィールドにアクセスできない、といった特殊性がある。
 
staticメソッド、つまり普通のメソッドは、インスタンスを作らなければ呼ぶことができない。
これは、普通のメソッドは「インスタンスが持っているメソッド」しか呼べないからである。
newインスタンスを作成した時に、そのクラスのメソッドをインスタンス内で記憶する。そのため、その後にアップキャストダウンキャストされ、見かけの、つまり参照変数が変化しても実際に呼ばれるメソッドは「インスタンス作成時に記憶したメソッド」が呼ばれる。これが「ポリモーフィズム」である。
ポリモーフィズムの機能が理解できない間は「newしたときにメソッドをインスタンスの中に持つ」と憶えるのがいい。
 
メソッドは、アクセス修飾子によって以下の4つに分けられる。
 
publicメソッド
無印メソッド
protectedメソッド
privateメソッド
 
これらのアクセスコントロールの違いにより、メソッドを使用できる範囲が決められる。
これらのうち、「無印」を除いてそれぞれのアクセスコントロールをうまく使い分ける必要がある。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    /**
    *   このmain()もメソッド。
    */
    public static void main( String[] args )
    {
        // NormalClassクラスを作ります。
        NormalClass normalClass = new NormalClass();
        // NormalClassクラスのsetAndGetData()メソッドを呼び出します。
        int result = normalClass.setAndGetData( 100 );
        System.out.println( result );
        // 100
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *   フィールド。
    */
    private int data;

    /**
    *   値をセットして返します。
    */
    public int setAndGetData( int param )
    {
        // 呼び出されることで、この中が処理されます。
        // 引数には、呼び出した際に渡された値100がコピーされています。
        // それを、フィールドにセットします。
        data = param;
        // この値をreturnで返すと同時に、メソッドを終了させます。
        return data;
    }
}
// Sample.java
public class Sample
{
    /**
    *   このmain()もメソッド。
    */
    public static void main( String[] args )
    {
        // NormalClassクラスを作ります。
        NormalClass normalClass = new NormalClass();
        // NormalClassクラスのsetAndGetData()メソッドを呼び出します。
        int result = normalClass.setAndGetData( 100 );
        System.out.println( result );
        // 100
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *   フィールド。
    */
    private int data;

    /**
    *   値をセットして返します。
    */
    public int setAndGetData( int param )
    {
        // 呼び出されることで、この中が処理されます。
        // 引数には、呼び出した際に渡された値100がコピーされています。
        // それを、フィールドにセットします。
        data = param;
        // この値をreturnで返すと同時に、メソッドを終了させます。
        return data;
    }
}

この単語を含むページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/02
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。