メンバメソッドとは

広告

ここでは再度メンバメソッドについて見ておきます。メンバメソッドとはクラスの中で定義されているメソッドのことで、そのクラスの中で何かの動作をするためのものです。

class ctest{
  public static void main(String args[]){
    Television tv1 = new Television();

    tv1.setChannel(1);
  }
}

class Television{
  int channelNo;

  void setChannel(int newChannelNo){
    if ((newChannelNo == 1) || (newChannel == 3)){
      channelNo = newChannelNo;
    }
  }

  void dispChannel(){
    System.out.println("現在のチャンネルは " + channelNo + " です");
  }
}

メンバメソッドはクラス内で使われると言うだけで、Javaプログラム入門の中で記述したメソッドを使うで記述したことと変わりはありません。メソッドを呼び出すときに引数を指定したり、メソッドからの戻り値を設定することもできます。

メンバメソッドの呼び出し方は、メンバ引数の場合と同様で、同じクラス内から呼び出す場合には「メンバメソッド名(引数)」か「this.メンバメソッド名(引数)」と記述しますし、メンバメソッドが定義されているクラスの外からオブジェクトを介して呼び出す場合には「オブジェクト名.メンバメソッド名(引数)」の形式で呼び出します。

publicとprivate

またメンバ変数と同じように、メンバメソッドにも「private」と「public」を付けることが出来ます。省略した場合は「public」が記述されている場合と同等です。例えば下記のようになります。

class Television{
  int channelNo;

  public void setChannel(int newChannelNo){
    channelNo = newChannelNo;
  }

  private void dispChannel(){
    System.out.println("現在のチャンネルは " + channelNo + " です");
  }
}

メンバメソッドをオブジェクトを介して外部から呼び出すには、必ず「public」と付けるか省略しておく必要があります。こちらも一度試しておきましょう。

ctest4.java

class ctest4{
  public static void main(String args[]){
    Television tv1 = new Television();

    tv1.setChannel(1);
  }
}

class Television{
  private int channelNo;

  private void setChannel(int newChannelNo){
    channelNo = newChannelNo;
    System.out.println("新しいChannelNo=" + channelNo);
  }
}

上記を実行しようとすると、コンパイルの段階でエラーとなります。

p3

今度はメンバメソッドに「public」を付けて試してみましょう。

ctest5.java

class ctest5{
  public static void main(String args[]){
    Television tv1 = new Television();

    tv1.setChannel(1);
  }
}

class Television{
  private int channelNo;

  public void setChannel(int newChannelNo){
    channelNo = newChannelNo;
    System.out.println("新しいChannelNo=" + channelNo);
  }
}

実行した結果は下記のようになります。

p4

今度は「public」が付いていますのでオブジェクト経由でメンバメソッドが定義されているクラスの外からメソッドを呼び出すことが出来ています。

mainメソッドのpublic

今までずっと使っていてmainメソッドを改めて見て下さい。

class ctest{
  public static void main(String args[]){
    Television tv1 = new Television();

    tv1.setChannel(1);
  }
}

今までmainメソッドの先頭についている「public」について説明を行ってきませんでしたが、この「public」は本ページで説明した通り、mainメソッドが外部から呼びだし可能であるために記述しています。mainメソッドは、プログラムの開始時に最初に呼び出されて実行されるメソッドですので、どこか他のクラスの中から呼ばれる事は無いのですが、Javaのシステムから呼び出しをされますので外部からアクセス可能なように「public」を必ず付けておく必要があります。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)