自分でメソッドを作る
public static void main(String[] args) { }メインメソッドは、プログラムが実行されたときに最初にプログラムが探すもの。このメインメソッド内に書かれた処理が実行される。
今回作るメソッドは、メインメソッドの外側に作られたクラスの中に作るもの。
メインメソッドじゃないメソッドをこれから作ろうとしている。
メソッドの種類
メソッドは主に2種類ある。
- すでに用意されているメソッド
例)System.out.println();など - 自分で作るメソッド
今回は2番の、自分で作るメソッドについて見ていく。
メソッドの基本的な構成
メソッドを作るとき、メソッドは6つの要素から構成されていることに注目。
- アクセス制限の修飾子・・・public、privateなど、どこまでアクセスを許すかを決めるもの
- static・・・オブジェクトを作ることなく、呼び出すことができる
- 戻り値の有無・・・戻り値があるかないかを書く
- メソッドの名前・・・自分で自由につけることができるメソッドの名前
- パラメーターリスト・・・()内に書かれること。「int x」だったり、「”This is ” + name」など様々な書き方ができる。あくまでオプションであり、空欄の時もある。
- メソッドの内容・・・実際に実行させたい事柄を{}内に書く
以上が、自作のメソッドの構成。
それぞれの細かいことについては順次見ていく。
メソッドを実際に作ってみる
自分でメソッドを実際に作ってみると、より理解しやすくなる。
class A {
public static void Hand() {
System.out.println(“Yes!”);
}
}
以上のメソッドは「A」というクラスを作り、その中にメソッドを作ったもの。
それぞれを、上の構成に当てはめると以下のようになる。
- アクセス制限の修飾子・・・public
- static・・・staticはstaticのまま
- 戻り値の有無・・・戻り値はないから「void」と書く
- メソッド名・・・Handと名付けた
- パラメーターリスト・・・今回は{}内に記述した内容を処理したいだけだから空欄
- メソッドの内容・・・System.out.println(“Yes!”);と入力。実行されると「Yes!」と表示
以上6つの要素からなる。
メソッド自体は、メソッド名、()、そして処理内容を{}内に書くことで作られる。
「System.out.println();」を使うなら、まずは「public static void」を使っておけばOKかな。
あとは、アクセス制限をどこまでかけるかによって「public」の部分が違ってくる。
メソッドを実際に実行してみる
今回はクラスファイルを別々に作ってみた。
パッケージの中に、上記でも書いた「Aクラス」を作る。
こちらはメインメソッドはなく、自分で作ったメソッドのみ。
※public static void main(String[] args) {}にチェックを入れない
public class A {
public static void Hand() {
System.out.println(“Yes!”);
}
}
※オレンジがメソッド部分
次にメインメソッドがあるMasakaクラスファイルを作成。
public class Masaka {
public static void main(String[] args) {
A.Hand();
}
}
※オレンジ部分がほかのクラスからデータを参照したメソッド。
これを実行すると「Yes!」と画面に表示される。
メインメソッド内のメソッドの表記方法
Aクラスでメソッドを作るとき、public static void Hand(){}と書いた。
この時のstaticがポイント。
これまでは、int A=5;などのデータが自作のクラス内にあり、そのデータを参照するためにメインメソッド内にオブジェクトを作らなくてはいけなかった。
でもこの「static」は、簡単に言えばオブジェクトを作ることなくデータを参照することができるというもの。
データを参照する場合は、参照したいクラス名を書き、ドット(.)を書いてメソッド名を続ける。
最後に();を書く。
A.Hand();
A・・・参照したいクラス名
「.」・・・ドット
Hand・・・参照したいクラス名の中にあるメソッド名
();・・・メソッド名の次につける
これによってAクラス内のHandメソッドが参照され、Handメソッド内の「System.out.println(“Yes!”);」が処理されることになる。
実行すると「Yes!」が画面に表示される。
最後に
自分でメソッドが作れると、プログラミングでできる範囲が広がるような気がしてなんかワクワクする!
今回はクラスファイルを2つ作って、ほかのクラスファイルからメソッドを参照するという形をとったが、これは自作のクラスとメソッドのアクセス修飾子が「private」だったら不可だから注意。
まだまだこれから頑張る。
コメント