目次

もう少し一般的なプログラム例

クラスを変数の型(の拡張)と意識しない

javaのよくある入門書で扱われている書き方を紹介しておきます。これもSeito1Kamoku と同じ結果が得られます。プログラムとしては1つにまとまりますので理解しやすく思えるかもしれません。

でもあまりお勧めしません。

ファイル名 Seito1Kamoku2.java

public class Seito1Kamoku2 { 
    /* フィールド */
    String namae;
    int ten;
    /* コンストラクタ */
    public Seito1Kamoku2( String s, int n ){
       namae = s;
       ten   = n;
    }
    /* main メソッド */
    public static void main( String[] args ) {
       Seito1Kamoku2 seito1 = new Seito1Kamoku2("岩井 亜紀",78);
       Seito1Kamoku2 seito2 = new Seito1Kamoku2("河合 和子",45);

       System.out.print( seito1.namae );
       System.out.print( " " );
       System.out.println( seito1.ten );

       System.out.print( seito2.namae );
       System.out.print( " " );
       System.out.println( seito2.ten );
    }
}

プログラムにはいろいろな書き方があり,どれが簡単で手間がかからず間違いが少なくできるかはやってみてはじめてわかる場合も少なくありません。目的や制作に携わる人数や,後に改良や拡張が必要になる見込みや,他のプログラムの部品として使う可能性があるかなど様々な要因で変わってきます。

しかし、Seito1Kamoku2.java は構造化の時代のC言語に近い書き方です。

フィールドの部分は大域変数の定義,コンストラクタは変数の初期化の関数。mainはプログラムの開始部分です。コンストラクタの new がなければオブジェクト指向言語で書いたと気がつかないかもしれません。

これだとなぜオブジェクト指向言語を使うのか,なぜコンストラクタがあってnewしなければならないのか理由がつかめないと思います。

コンストラクタがない例

コンストラクタというものもなかなか理解しがたいので,表だって書かないということもできます。

ファイル名 Seito1Kamoku3.java

public class Seito1Kamoku3 { 
    /* フィールド */
    String namae;
    int ten;

    /* main メソッド */
    public static void main( String[] args ) {
       Seito1Kamoku3 seito1 = new Seito1Kamoku3();
       Seito1Kamoku3 seito2 = new Seito1Kamoku3();

       seito1.namae="岩井 亜紀";
       seito1.ten  =78;
       seito2.namae="河合 和子";
       seito2.ten  =45;

       System.out.print( seito1.namae );
       System.out.print( " " );
       System.out.println( seito1.ten );

       System.out.print( seito2.namae );
       System.out.print( " " );
       System.out.println( seito2.ten );
    }
}

ただこれではいよいよ new の意味が不明になるでしょうね。

コンストラクタを省略すると,javaは値の入っていないデータの格納場所だけを用意するという最低限のことしかしないコンストラクタを使って変数を用意します。

そこで,名前や点数は後で代入しています。これを忘れないように自動化するのがコンストラクタです。名前しか代入しないとか,点数の初期値は0点にしておくとか,未受験にしておくとか様々な工夫をこらすことも可能になります。

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified