[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座二学期単位6 →4時間目

4時間目 クラス及びメソッドの関係

 この時間は、クラスとメソッドの復習やクラスとメソッドの関係をもう少し詳しく説明します。

6−4−1.メソッドの戻り値

 メソッドには、値を戻す型が有る事は既に説明しました。
構文をもう一度見てみましょう。

戻り値の型 メソッド名(引数) {
    文;
    …
    
    return 文;
}
 言葉を変えて示しましたが、この書き方の方が意味は分かりやすいと思います。

 戻り値の型は、単位2 3時間目 型と式・演算子の表(基本デー タ型)のデータ型、配列又はクラスを指定する事が可能です。
戻り値の型には、もう1つ指定できる型が有り、「return文」で戻す必要が無い時に使用します。
戻す必要がない場合には、「void」を指定します。
voidは、空を意味し、Javaでは戻り値無しのメソッドとして解釈されます。
よって、呼び出し元で変数に代入するとコンパイルエラーです。

6−4−2.メソッドの引数

 引数は、指定する事も指定しない事も出来ると書きましたが、指定しない場合は何も記述しないと引数無し です。

 一番最初に示したプログラムを覚えていますか。
HelloWorldを表示するプログラムだったのですが、最初のプログラムには、戻り値が「void」で引数に何も指 定していませんでした。
もう一度プログラムを見てみましょう。

Sample6_4_1.java
public class Sample6_4_1 {
    public static void main(String[] args) {
        new HelloWorld().view();
    }
}

class HelloWorld {
    void view() {
        System.out.println("HelloWorld");
    }
}
  

 懐かしいですね。
最初のプログラムでは、クラスを宣言させずに直接「new」演算子を使って「view()」を呼び出していますね。
最初にサンプルとして用意した時には、簡単に説明をしてしまいましたが、何故可能か又はコンパイルエラー にならないか分かりますか。
注目するのは、「view()」です。
「view()」は、メソッド文である為です。
メソッド文は、それ自体が文なので変数に代入しなくてもコンパイルエラーにならないのです。
変数又は定数だけの場合はコンパイルエラーです。
但し、変数を宣言していないので一時的にメモリ上に確保すると覚えてください。
よって、「new HelloWorld()」で直接メモリ上に確保した状態から「view()」を呼び出している訳です。

 このサンプルプログラムの用に、戻り値が「void」で引数が空の場合は完全に独立して呼び出し元の処理に 影響せずに処理を実行します。

6−4−3.クラスを返す

 呼び出し先でクラスをインスタンス化し、呼び出し元にクラスを返してみましょう。
呼び出し元は、クラスを宣言するだけでインスタンス化しません。
但し、初期値に呼び出し先からクラスを取得します。
それでは、サンプルプログラムをご覧下さい。

Sample6_4_1.java
// 本クラス
class Book {

    String  title;                          // タイトル
    String  author;                         // 著者
    String  translator;                     // 訳者
    String  publisher;                      // 出版社
    String  isbn;                           // ISBN

    // 本を返す
    Book get() {

        Book objBook = new Book();
        objBook.title = "人月の神話 狼人間を撃つ銀の弾はない";
        objBook.author = "フレデリック・P・ブルックス, Jr.";
        objBook.translator = "滝沢徹・牧野祐子・富澤晃";
        objBook.publisher = "ピアソン・エデュケーション";
        objBook.isbn = "4-89471-665-8";

        return objBook;
    }
}

public class Sample6_4_1 {

    public static void main(String[] args) {

        Book objBook = new Book().get();

        System.out.println("タイトル:" + objBook.title);
        System.out.println("著者:" + objBook.author);
        System.out.println("訳者:" + objBook.translator);
        System.out.println("出版社:" + objBook.publisher);
        System.out.println("ISBN:" + objBook.isbn);
    }
}
  
タイトル:人月の神話 狼人間を撃つ銀の弾はない
著者:フレデリック・P・ブルックス, Jr.
訳者:滝沢徹・牧野祐子・富澤晃
出版社:ピアソン・エデュケーション
ISBN:4-89471-665-8

 本来なら、フィールドに直接アクセスせずに、メソッドを使い行うのですが、今回は説明を分かりやすくす る為に、省略しました。
 クラスのオブジェクトを返すのも、配列を返すのもデータ型と同じだという事が分かったと思います。

3時間目 メソッドとはに戻る     5時間目 これからに進む

単位6 オブジェクト指向及びクラスの基本に戻る

トップページに戻る