トップ 一覧 検索 ヘルプ RSS ログイン

クラスの構成(メンバー)の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!! 第一章 Java プログラミングの基礎

!! 1-3. Javaプログラムの基礎

! クラスの構成(メンバー)

ここで、クラスの中身についてちょっと説明しておきましょう。クラスのソースファイルは基本的に次のような構成になっています。

 1.class ClassStructure{
 2.    /**
 3.     * クラスのメンバー達
 4.     */
 5.
 6.    /*
 7.     * メンバー変数(インスタンス変数)の宣言
 8.     */
 9.    // 公開変数 - 外部から直接アクセス可能
 10.    public int a;
 11.    // 限定公開変数 - 同じパッケージまたはサブクラスからアクセス可能
 12.    protected int b;
 13.    // 内部変数 - 同じクラス内から参照可能
 14.    private int c;
 15.    // 限定公開変数2 - 同じパッケージ内からアクセス可能
 16.    int d;
 17.    
 18.    /*
 19.     * コンストラクタ  - オブジェクト作成時に呼ばれる
 20.     * (返り値がないことに注目!)
 21.     */
 22.    public ClassStructure( 引数[省略可]){
 23.        // メンバー変数に引数を代入
 24.        this.a = a;
 25.    }
 26.    
 27.    /*
 28.     * 公開メソッド - 外部からアクセス可
 29.     */
 30.    public int method1( 引数[省略可]){
 31.        // これはローカル変数(引数の値で初期化)
 32.        int b = a;
 33.        
 34.        // メンバー変数に代入
 35.        this.a = b;
 36.        
 37.        /* 処理 */
 38.        
 39.        return 返り値;
 40.    }
 41.    
 42.    /*
 43.     * 内部メソッド - クラス内部からのみアクセス可
 44.     */ 
 45.    private int method2( 引数[省略可]){
 46.        /* 処理 */
 47.    }
 48.    
 49.    /*
 50.     * 限定公開メソッド - 同一パッケージからのみアクセス可
 51.     */
 52.    protected int method3( 引数[省略可]){
 53.        /* 処理 */
 54.    }
 55.}
{{pre num
class ClassStructure{
    /**
     * クラスのメンバー達
     */

    /*
     * メンバー変数(インスタンス変数)の宣言
     */
    // 公開変数 - 外部から直接アクセス可能
    public int a;
    // 限定公開変数 - 同じパッケージまたはサブクラスからアクセス可能
    protected int b;
    // 内部変数 - 同じクラス内から参照可能
    private int c;
    // 限定公開変数2 - 同じパッケージ内からアクセス可能
    int d;
    
    /*
     * コンストラクタ  - オブジェクト作成時に呼ばれる
     * (返り値がないことに注目!)
     */
    public ClassStructure( 引数[省略可]){
        // メンバー変数に引数を代入
        this.a = a;
    }
    
    /*
     * 公開メソッド - 外部からアクセス可
     */
    public int method1( 引数[省略可]){
        // これはローカル変数(引数の値で初期化)
        int b = a;
        
        // メンバー変数に代入
        this.a = b;
        
        /* 処理 */
        
        return 返り値;
    }
    
    /*
     * 内部メソッド - クラス内部からのみアクセス可
     */ 
    private int method2( 引数[省略可]){
        /* 処理 */
    }
    
    /*
     * 限定公開メソッド - 同一パッケージからのみアクセス可
     */
    protected int method3( 引数[省略可]){
        /* 処理 */
    }
}
}}

クラスを構成するものを''メンバー''(構成員)といいます。

2行目から16行目、クラス内だけどメソッドの中ではないところで宣言された変数は、オブジェクトが存続しているあいだずっと記憶されています。つまりクラスが表現しているオブジェクトのデータ部分に当たります。この変数はクラスのメンバーであるので、''メンバー変数''(またはインスタンス変数)と呼ばれます。

またデータを扱うためのメソッドもクラスの一員、メンバーです。これに対して、ブロック(38ページ参照)の中などで定義される、一時的な変数を''ローカル変数''(局所変数)といいます。ローカル変数はそれを定義したブロックの中でのみ有効です。

クラスのメンバー(変数、メソッド)にはアクセス修飾子をつけることができます。誰がそれを覗くことができるかを指定するものです。アクセス修飾子を表にまとめました。

,アクセス修飾子,説明
,private,同じクラスからしか呼び出せない。
,省略,同じパッケージ内からしか呼び出せない。
,protected,同じパッケージまたはサブクラスからしか呼び出せない。
,public,どこからでも呼び出せる。
'''表 2''' アクセス修飾子

複数人で大規模なプログラムを作成するときや、オブジェクト指向にきちんと従ったプログラムを作成するときには、適切なアクセス修飾子を指定することがとても重要になります。ただし本書の中ではそれほど重要な事項ではないので「アクセスを制限するためのアクセス修飾子というものがある」ということだけ覚えておけば結構です。