フィールド
日本語 | 領域 |
英語 | field |
ふりがな | ふぃーるど |
フリガナ | フィールド |
クラス単位で持つ変数。
ローカル変数と異なり、クラス単位で作られる変数を「フィールド」という。
フィールドには、普通のフィールド(インスタンス変数)と「staticフィールド」(クラス変数)がある。
「staticフィールド」についてはその項目を参照のこと。
以下、普通のフィールドについて説明する。
フィールドはクラス内で「private int value;」のように宣言する。
詳しい宣言の形式については「変数宣言」及び「フィールド変数宣言」を参照。
基本的には通常の変数(ローカル変数)の宣言と同じであり、それに「アクセス修飾子」等の「フィールド修飾子」を加えたものとなる。
フィールドはインスタンスが作られると同時にインスタンス内に作られる。
「インスタンス変数」とも呼ばれ、その名の通りインスタンス内に確保された変数となる。
インスタンス内に作られるため、当然インスタンス毎に独立した変数となる。そのため、フィールドは「インスタンスの情報」となる。
たとえば人を表現するクラス「Human」を作るとしたら、クラスには「name」「age」といったフィールドを持たせることになる。Humanクラスのインスタンスを作り、それをHumanクラスの参照型変数tanakaに格納し、このインスタンスの情報としてnameに"tanaka"、ageに30を格納することになる。
フィールドは、アクセス修飾子によって以下の4つに分けられる。
・publicフィールド
・無印フィールド
・protectedフィールド
・privateフィールド
これらのアクセスコントロールの違いにより、フィールドを使用できる範囲が決められる。
だが、実際にはフィールドはprivateフィールドとし、クラスの外からアクセスする場合にはgetter/setterを作成するのが望ましい。
ローカル変数と異なり、クラス単位で作られる変数を「フィールド」という。
フィールドには、普通のフィールド(インスタンス変数)と「staticフィールド」(クラス変数)がある。
「staticフィールド」についてはその項目を参照のこと。
以下、普通のフィールドについて説明する。
フィールドはクラス内で「private int value;」のように宣言する。
詳しい宣言の形式については「変数宣言」及び「フィールド変数宣言」を参照。
基本的には通常の変数(ローカル変数)の宣言と同じであり、それに「アクセス修飾子」等の「フィールド修飾子」を加えたものとなる。
フィールドはインスタンスが作られると同時にインスタンス内に作られる。
「インスタンス変数」とも呼ばれ、その名の通りインスタンス内に確保された変数となる。
インスタンス内に作られるため、当然インスタンス毎に独立した変数となる。そのため、フィールドは「インスタンスの情報」となる。
たとえば人を表現するクラス「Human」を作るとしたら、クラスには「name」「age」といったフィールドを持たせることになる。Humanクラスのインスタンスを作り、それをHumanクラスの参照型変数tanakaに格納し、このインスタンスの情報としてnameに"tanaka"、ageに30を格納することになる。
フィールドは、アクセス修飾子によって以下の4つに分けられる。
・publicフィールド
・無印フィールド
・protectedフィールド
・privateフィールド
これらのアクセスコントロールの違いにより、フィールドを使用できる範囲が決められる。
だが、実際にはフィールドはprivateフィールドとし、クラスの外からアクセスする場合にはgetter/setterを作成するのが望ましい。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 最も基本的で、かつあんまりしない方がいい
// フィールドの使い方。
// HasFieldClassクラスを作ります。
HasFieldClass hasFieldClass = new HasFieldClass();
// この中にあるdataフィールドにアクセスします。
hasFieldClass.data = 100;
System.out.println( hasFieldClass.data );
// 100
// 普通のフィールド(非staticフィールド)は
// インスタンスを作らないとアクセスできません。
// だって、インスタンスを作らないと変数そのものが
// 作られないんだから。
// HasFieldClass.data = 200;
// コンパイルエラー:
// static 参照は非 static フィールド HasFieldClass.data ではできません。
// メソッド経由でアクセスします。
hasFieldClass.output();
// 100
// 以上は、フィールドに直接アクセスする例。
// 実際には、フィールドはprivateにして
// 直接アクセスできないようにし、
// getter/setter経由でアクセスします。
// NormalClassクラスを作ります。
NormalClass normalClass = new NormalClass();
// 値にはアクセサでアクセスします。
normalClass.setData( 100 );
System.out.println( normalClass.getData() );
// 100
// increment()メソッドを呼んで1増やします。
normalClass.increment();
System.out.println( normalClass.getData() );
// 101
}
}
/**
* フィールドを持つクラス。
*/
class HasFieldClass
{
/**
* これがフィールド。
*/
int data;
/**
* フィールドにアクセスするメソッド。
*/
public void output()
{
System.out.println( data );
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* privateなフィールド。
* 基本的にフィールドはprivateにします。
* 外からアクセスする場合にはgetter/setterを
* 用意します。
*/
private int data;
/**
* getter。
*/
public int getData()
{
return data;
}
/**
* setter。
*/
public void setData( int value )
{
this.data = value;
}
/**
* 1増やします。
*/
public void increment()
{
// 中からアクセスする場合には
// getterは使わないことが多いです。
++data;
// ただし、場合によっては使うこともあるかも。
// getterで特別な処理をしていて、それが
// 中からアクセスする場合にも必要なときとか。
}
}
public class Sample
{
public static void main( String[] args )
{
// 最も基本的で、かつあんまりしない方がいい
// フィールドの使い方。
// HasFieldClassクラスを作ります。
HasFieldClass hasFieldClass = new HasFieldClass();
// この中にあるdataフィールドにアクセスします。
hasFieldClass.data = 100;
System.out.println( hasFieldClass.data );
// 100
// 普通のフィールド(非staticフィールド)は
// インスタンスを作らないとアクセスできません。
// だって、インスタンスを作らないと変数そのものが
// 作られないんだから。
// HasFieldClass.data = 200;
// コンパイルエラー:
// static 参照は非 static フィールド HasFieldClass.data ではできません。
// メソッド経由でアクセスします。
hasFieldClass.output();
// 100
// 以上は、フィールドに直接アクセスする例。
// 実際には、フィールドはprivateにして
// 直接アクセスできないようにし、
// getter/setter経由でアクセスします。
// NormalClassクラスを作ります。
NormalClass normalClass = new NormalClass();
// 値にはアクセサでアクセスします。
normalClass.setData( 100 );
System.out.println( normalClass.getData() );
// 100
// increment()メソッドを呼んで1増やします。
normalClass.increment();
System.out.println( normalClass.getData() );
// 101
}
}
/**
* フィールドを持つクラス。
*/
class HasFieldClass
{
/**
* これがフィールド。
*/
int data;
/**
* フィールドにアクセスするメソッド。
*/
public void output()
{
System.out.println( data );
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* privateなフィールド。
* 基本的にフィールドはprivateにします。
* 外からアクセスする場合にはgetter/setterを
* 用意します。
*/
private int data;
/**
* getter。
*/
public int getData()
{
return data;
}
/**
* setter。
*/
public void setData( int value )
{
this.data = value;
}
/**
* 1増やします。
*/
public void increment()
{
// 中からアクセスする場合には
// getterは使わないことが多いです。
++data;
// ただし、場合によっては使うこともあるかも。
// getterで特別な処理をしていて、それが
// 中からアクセスする場合にも必要なときとか。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 最も基本的で、かつあんまりしない方がいい // フィールドの使い方。 // HasFieldClassクラスを作ります。 HasFieldClass hasFieldClass = new HasFieldClass(); // この中にあるdataフィールドにアクセスします。 hasFieldClass.data = 100; System.out.println( hasFieldClass.data ); // 100 // 普通のフィールド(非staticフィールド)は // インスタンスを作らないとアクセスできません。 // だって、インスタンスを作らないと変数そのものが // 作られないんだから。 // HasFieldClass.data = 200; // コンパイルエラー: // static 参照は非 static フィールド HasFieldClass.data ではできません。 // メソッド経由でアクセスします。 hasFieldClass.output(); // 100 // 以上は、フィールドに直接アクセスする例。 // 実際には、フィールドはprivateにして // 直接アクセスできないようにし、 // getter/setter経由でアクセスします。 // NormalClassクラスを作ります。 NormalClass normalClass = new NormalClass(); // 値にはアクセサでアクセスします。 normalClass.setData( 100 ); System.out.println( normalClass.getData() ); // 100 // increment()メソッドを呼んで1増やします。 normalClass.increment(); System.out.println( normalClass.getData() ); // 101 } } /** * フィールドを持つクラス。 */ class HasFieldClass { /** * これがフィールド。 */ int data; /** * フィールドにアクセスするメソッド。 */ public void output() { System.out.println( data ); } } /** * フツーのクラス。 */ class NormalClass { /** * privateなフィールド。 * 基本的にフィールドはprivateにします。 * 外からアクセスする場合にはgetter/setterを * 用意します。 */ private int data; /** * getter。 */ public int getData() { return data; } /** * setter。 */ public void setData( int value ) { this.data = value; } /** * 1増やします。 */ public void increment() { // 中からアクセスする場合には // getterは使わないことが多いです。 ++data; // ただし、場合によっては使うこともあるかも。 // getterで特別な処理をしていて、それが // 中からアクセスする場合にも必要なときとか。 } }
「みだし」に含まれているページ
「解説」に含まれているページ
- #
- .
- /*
- @deprecated
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
- C++言語
- Calendar
- CharArrayWriter
- class
- Class
- classフィールド
- clone
- const
- C言語
- Deprecated
- equals
- FilterInputStream
- FilterOutputStream
- FilterReader
- FilterWriter
- final
- final変数
- friend
- getter
- getter/setter
- implements
- InputStreamReader
- JavaBeans
- Javadoc
- JSP宣言
- JSP暗黙オブジェクト「out」
- length
- LineNumberReader
- Locale
- Math
- NaN
- NullPointerException
- ObjectInputStream
- ObjectOutputStream
- out
- OutputStreamWriter
- PrintWriter
- private
- privateフィールド
- protected
- protectedフィールド
- public
- publicフィールド
- PushbackInputStream
- PushbackReader
- Serializable
- setter
- size
- static
- static final
- staticコンテキスト
- staticフィールド
- staticメソッド
- static初期化子
- static変数
- StringWriter
- struct
- super
- superフィールド
- synchronizedブロック
- synchronizedメソッド
- System
- System.err
- System.out
- this
- toString
- transient
- volatile
- アクセサー
- アクセスコントロール
- インスタンス
- インスタンスは不変
- インスタンスフィールド
- インスタンス変数
- インターフェイス
- オブジェクト
- オブジェクト指向
- カプセル化
- クラス
- クラスメンバ
- クラス変数
- クラス定義
- グローバル変数
- コンストラクタ
- コンポジション
- スコープ
- テーブル
- デバッグ
- デフォルト
- デフォルトコンストラクタ
- ドキュメンテーションコメント
- ファイル区切り文字
- フィールド
- フィールド修飾子
- フィールド変数
- フィールド宣言
- フォーカス
- プロパティ
- マジックナンバー
- マルチスレッド
- メソッド
- メンバ
- メンバ変数
- メンバ関数
- ラッパー
- リフレクション
- ロケール
- ローカル変数
- 修飾子
- 内部クラス
- 再帰呼び出し
- 切り上げ
- 切り捨て
- 列
- 参照
- 四捨五入
- 変数
- 変数宣言
- 委譲
- 宣言
- 対数
- 属性
- 戻り値
- 推奨されていません
- 構造体
- 浅いコピー
- 深いコピー
- 無印
- 無印フィールド
- 無限大
- 直列化
- 継承
- 識別子
- 配列
- 集約
- 静的
「サンプルプログラムとか」に含まれているページ
- #
- .
- <%! %>
- Boolean
- byte
- Calendar
- char
- Class
- classフィールド
- clone
- compareTo
- const
- double
- doステートメント
- FilterInputStream
- FilterOutputStream
- FilterReader
- FilterWriter
- float
- forステートメント
- getter
- getter/setter
- int
- Iterable<T>
- JSP宣言
- length
- LineNumberReader
- Locale
- Log4j
- Logger
- long
- Math
- NaN
- null
- ObjectInputStream
- ObjectOutputStream
- println
- privateフィールド
- protectedクラス
- protectedフィールド
- public
- publicフィールド
- Serializable
- setter
- short
- static final
- staticコンテキスト
- staticフィールド
- static変数
- struct
- synchronizedブロック
- synchronizedメソッド
- System
- this
- TLD
- tldファイル
- toString
- transient
- volatile
- whileステートメント
- アクセサー
- アクセスコントロール
- インスタンスは不変
- インスタンスフィールド
- インスタンス初期化ブロック
- インスタンス初期化子
- インスタンス変数
- カスタムタグライブラリ
- カプセル化
- クラス
- クラスメンバ
- クラス変数
- グローバル
- グローバル変数
- ジェネリッククラス
- スコープ
- ネストクラス
- ハンドラ
- ファイル区切り文字
- フィールド
- フィールド修飾子
- フィールド変数
- フィールド宣言
- フォーカス
- マジックナンバー
- メソッド
- メタ
- メンバ
- メンバ変数
- メンバ関数
- ラッパー
- ラベル
- ログ
- ロケール
- ローカルクラス
- 内部クラス
- 再描画
- 初期化
- 同期
- 変数
- 変数宣言
- 外部クラス
- 安定ソート
- 戻り値
- 排他
- 構造体
- 浅いコピー
- 深いコピー
- 無印フィールド
- 無限大
- 直列化
- 識別子
- 配列
- 隠蔽
- 静的