JavaA2Z

KAB-studio > プログラミング > JavaA2Z > privateフィールドとは

privateフィールド

日本語 隠蔽フィールド
英語 private field
ふりがな ぷらいべーとふぃーるど
フリガナ プライベートフィールド

解説

privateで修飾されたフィールド
private フィールド;」のように、フィールド宣言の先頭にprivateが付けられたフィールド
privateフィールドは「自分のクラスメソッド以外からはアクセスできない」ようになる。
基本的に、フィールドは特別な場合を除き全てprivateにし、外のクラスからは直接アクセスできないようにする。そして、フィールドへのアクセスはgetter/setterを通してうようにする。
フィールドへのアクセスにgetter/setterを使用することで、「フィールドへのアクセスの監視」「フィールドの入出力時に必要な処理の追加」がえるようになり、外部からの不作法なアクセスを回避することができる。
「自分で作って自分で使うから問題ない」とは思わないこと。privateにして「禁止」しておかないと、故意にせよ無意識にせよ利用してしまうものである。たとえ「気を付けているから大丈夫」だと考えていても、フィールドprivateにするべきである。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        NormalClass normalClass = new NormalClass();
        // privateフィールドを、publicメソッドを経由して
        // アクセスします。
        normalClass.setData( 100 );
        System.out.println( normalClass.getData() );
        // 100

        // privateフィールドをクラスの外から呼び出すことは
        // できません。
        // System.out.println( normalClass.data );
        // コンパイルエラー:
        // フィールド normalClass.data は不可視です。
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *    privateなフィールド。
    */
    private int data;

    /**
    *    getter。
    */
    public int getData()
    {
        return data;
    }

    /**
    *    setter。
    */
    public void setData( int value )
    {
        this.data = value;
    }

    /**
    *    自分のクラスを使うクラス。
    */
    public void callPrivateMethod()
    {
        NormalClass normalClass = new NormalClass();
        // privateは「自分のクラス以外のメソッドからはアクセスできない」
        // という意味です。
        // 決して「自分のクラスの外からアクセスできない」
        // という意味ではありません。
        // だから、こんなこともできます。
        System.out.println( normalClass.data );
        // dataフィールドはprivateフィールドなので
        // 一見このような形式では呼べなさそうですが、
        // callPrivateMethod()メソッドがNormalClassクラスのメソッドなので
        // 呼び出すことができます。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        NormalClass normalClass = new NormalClass();
        // privateフィールドを、publicメソッドを経由して
        // アクセスします。
        normalClass.setData( 100 );
        System.out.println( normalClass.getData() );
        // 100

        // privateフィールドをクラスの外から呼び出すことは
        // できません。
        // System.out.println( normalClass.data );
        // コンパイルエラー:
        // フィールド normalClass.data は不可視です。
    }
}

/**
*   フツーのクラス。
*/
class NormalClass
{
    /**
    *    privateなフィールド。
    */
    private int data;

    /**
    *    getter。
    */
    public int getData()
    {
        return data;
    }

    /**
    *    setter。
    */
    public void setData( int value )
    {
        this.data = value;
    }

    /**
    *    自分のクラスを使うクラス。
    */
    public void callPrivateMethod()
    {
        NormalClass normalClass = new NormalClass();
        // privateは「自分のクラス以外のメソッドからはアクセスできない」
        // という意味です。
        // 決して「自分のクラスの外からアクセスできない」
        // という意味ではありません。
        // だから、こんなこともできます。
        System.out.println( normalClass.data );
        // dataフィールドはprivateフィールドなので
        // 一見このような形式では呼べなさそうですが、
        // callPrivateMethod()メソッドがNormalClassクラスのメソッドなので
        // 呼び出すことができます。
    }
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/03/25
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。