インスタンス
日本語 | 実体 |
英語 | instance |
ふりがな | いんすたんす |
フリガナ | インスタンス |
クラスの「実体」。
クラスはプリミティブ型と異なり、クラスの型の変数を作るだけでは使用できない。
クラスはnewを使用することで初めてクラスの実体「インスタンス」を作ることができる。
インスタンスは概念上は「どこかに作られた、クラスのフィールドやメソッドを持つもの」である。
作られた場所は「どこか」のため、直接操作することはできない。操作は「参照」を使用して行う。
参照はインスタンスの作成時に返される。クラス型の変数は、正確には「クラスの参照型の変数」であり、この変数にインスタンスの参照を格納することができる。
参照の格納後は、その参照を使用してクラスのインスタンスを操作することができる。
と言っても、インスタンスが直接操作できず、参照を通してのみ操作できることを考えれば、参照=クラスと考えてしまって構わない。
実際には、インスタンスはメモリ上に確保された領域である。
確保されたメモリ領域には、フィールドが格納する値や、「どのメソッドを呼ぶか」といったデータが置かれている。
インスタンスには「自分のクラスが何のクラスなのか」が情報として格納されているため、参照を格納した型がインスタンスのスーパークラスであったとしてもインスタンスのクラスのメソッドを呼び出すことができ、またダウンキャストも行える。これが、ポリモーフィズムされる理由である。
また、クラスの他に、配列の実体も「インスタンス」と呼ぶが、普通はあまりこちらの意味では使用しない。
さらに、「インスタンス」がそのものずばり「実体」としての意味として使用されることがあるため、特に英文に出てきた場合には文脈から把握する必要がある。
クラスはプリミティブ型と異なり、クラスの型の変数を作るだけでは使用できない。
クラスはnewを使用することで初めてクラスの実体「インスタンス」を作ることができる。
インスタンスは概念上は「どこかに作られた、クラスのフィールドやメソッドを持つもの」である。
作られた場所は「どこか」のため、直接操作することはできない。操作は「参照」を使用して行う。
参照はインスタンスの作成時に返される。クラス型の変数は、正確には「クラスの参照型の変数」であり、この変数にインスタンスの参照を格納することができる。
参照の格納後は、その参照を使用してクラスのインスタンスを操作することができる。
と言っても、インスタンスが直接操作できず、参照を通してのみ操作できることを考えれば、参照=クラスと考えてしまって構わない。
実際には、インスタンスはメモリ上に確保された領域である。
確保されたメモリ領域には、フィールドが格納する値や、「どのメソッドを呼ぶか」といったデータが置かれている。
インスタンスには「自分のクラスが何のクラスなのか」が情報として格納されているため、参照を格納した型がインスタンスのスーパークラスであったとしてもインスタンスのクラスのメソッドを呼び出すことができ、またダウンキャストも行える。これが、ポリモーフィズムされる理由である。
また、クラスの他に、配列の実体も「インスタンス」と呼ぶが、普通はあまりこちらの意味では使用しない。
さらに、「インスタンス」がそのものずばり「実体」としての意味として使用されることがあるため、特に英文に出てきた場合には文脈から把握する必要がある。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// Integerクラスのインスタンスを作ります。
new Integer( 100 );
// これだと、インスタンスができただけ。
// Javaではインスタンスを直接操作することは
// できないため、このインスタンスは
// 「生き霊」化します(ただし、あとで
// ガベージコレクタが削除してくれます)。
// インスタンスの作成と同時に、
// そのインスタンスへの参照が戻り値として
// 返されるので、それを受け取ります。
Integer integer = new Integer( 100 );
// 参照を使用することで、インスタンスを
// 操作できます。
System.out.println( integer );
// 100
// 配列の実体も「インスタンス」です。
// 要素数5のint型配列のインスタンスを作ります。
new int[5];
// これも、参照で受け取らないと使えません。
}
}
public class Sample
{
public static void main( String[] args )
{
// Integerクラスのインスタンスを作ります。
new Integer( 100 );
// これだと、インスタンスができただけ。
// Javaではインスタンスを直接操作することは
// できないため、このインスタンスは
// 「生き霊」化します(ただし、あとで
// ガベージコレクタが削除してくれます)。
// インスタンスの作成と同時に、
// そのインスタンスへの参照が戻り値として
// 返されるので、それを受け取ります。
Integer integer = new Integer( 100 );
// 参照を使用することで、インスタンスを
// 操作できます。
System.out.println( integer );
// 100
// 配列の実体も「インスタンス」です。
// 要素数5のint型配列のインスタンスを作ります。
new int[5];
// これも、参照で受け取らないと使えません。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // Integerクラスのインスタンスを作ります。 new Integer( 100 ); // これだと、インスタンスができただけ。 // Javaではインスタンスを直接操作することは // できないため、このインスタンスは // 「生き霊」化します(ただし、あとで // ガベージコレクタが削除してくれます)。 // インスタンスの作成と同時に、 // そのインスタンスへの参照が戻り値として // 返されるので、それを受け取ります。 Integer integer = new Integer( 100 ); // 参照を使用することで、インスタンスを // 操作できます。 System.out.println( integer ); // 100 // 配列の実体も「インスタンス」です。 // 要素数5のint型配列のインスタンスを作ります。 new int[5]; // これも、参照で受け取らないと使えません。 } }
「みだし」に含まれているページ
「解説」に含まれているページ
- "
- C++言語
- Calendar
- catch
- Caused by
- CharArrayWriter
- Class
- ClassCastException
- classesディレクトリ
- classフィールド
- clone
- Cloneable
- close
- Connection
- const
- ExceptionInInitializerError
- File
- final変数
- Graphics
- GregorianCalendar
- InputStream
- instanceof
- JSP暗黙オブジェクト「exception」
- Locale
- new
- Node
- null
- OutOfMemoryError
- OutputStream
- PreparedStatement
- Reader
- ResultSet
- Serializable
- size
- StackOverflowError
- Statement
- static
- static final
- staticクラス
- staticフィールド
- staticメソッド
- staticローカル変数
- StringWriter
- superフィールド
- synchronizedブロック
- synchronizedメソッド
- System
- this
- throw
- toString
- Writer
- アップキャスト
- アドレス
- イベントリスナー
- インスタンス
- インスタンスは不変
- インスタンスフィールド
- インスタンス初期化ブロック
- インスタンス初期化子
- インスタンス変数
- インターフェイス
- エンクロージングインスタンス
- オブジェクト
- オブジェクト指向
- オートボクシング
- オーバーライド
- カレント
- ガベージコレクション
- クラス
- クラスメソッド
- クラスメンバ
- クラス変数
- コネクション
- コンストラクタ
- コンストラクタ修飾子
- コンポジション
- スコープ
- スタック領域
- タグライブラリ
- ダウンキャスト
- ナローイング変換
- バイト入力ストリーム
- バイト出力ストリーム
- フィールド
- プリペアードステートメント
- プリミティブ型
- ボクシング変換
- ポリモーフィズム
- メソッド
- ラッパー
- リフレクション
- ロケール
- ロック
- ローカルクラス
- ローカル変数
- ワイドニング変換
- 例外
- 内部クラス
- 動的束縛
- 参照
- 可変長配列
- 型
- 変数
- 変数宣言
- 外部クラス
- 寿命
- 引数
- 戻り値
- 投げる
- 抽象クラス
- 文字入力ストリーム
- 文字出力ストリーム
- 文字列リテラル
- 浅いコピー
- 深いコピー
- 添え字
- 無限ループ
- 直列化
- 配列
- 配列初期化子
「サンプルプログラムとか」に含まれているページ
- "
- +=
- [
- ]
- Boolean
- Calendar
- catch
- Class
- classesディレクトリ
- clone
- Cloneable
- CloneNotSupportedException
- close
- ExceptionInInitializerError
- extends
- File
- final変数
- Frame
- implements
- instanceof
- interface
- Iterable<T>
- MVC
- new
- null
- PreparedStatement
- printStackTrace
- private
- StackOverflowError
- static final
- staticクラス
- staticフィールド
- staticメソッド
- synchronizedブロック
- synchronizedメソッド
- System
- this
- toString
- WHERE
- アップキャスト
- アドレス
- アンボクシング変換
- インスタンス
- インスタンスは不変
- インスタンスフィールド
- インスタンス初期化ブロック
- インスタンス初期化子
- インスタンス変数
- インターフェイス
- エポック
- エンクロージングインスタンス
- オブジェクト指向
- オートボクシング
- オーバーライド
- カレント
- ガベージコレクション
- キャッシュ
- クラス
- コンストラクタ
- コントローラー
- コンパイルタイムエラー
- サブクラス
- シグネチャー
- ジェネリッククラス
- ジェネリックメソッド
- スコープ
- スーパークラス
- ソースファイル
- ダウンキャスト
- デフォルトコンストラクタ
- ネストクラス
- ビュー
- フィールド
- プリペアードステートメント
- ボクシング変換
- ポリモーフィズム
- モデル
- ラッパー
- ロック
- ローカル変数
- 内部クラス
- 動的
- 動的束縛
- 参照
- 変数
- 外部クラス
- 子クラス
- 寿命
- 引数
- 戻り値
- 抽象クラス
- 拡張for
- 木構造
- 派生クラス
- 浅いコピー
- 深いコピー
- 継承
- 親クラス
- 配列
- 配列初期化子