Java オブジェクトシステム艾 迪
開発室
2014/10/21
ⓒ 2013 LINE CORPORATION
2
1. Java のオブジェクトシステムのインスタンス、
クラス、スーパークラス、それぞれがなにへのポ
インタを保持しているか
2. Class クラス、 Object クラス、 Object イン
スタンスの関係
宿題内容
?
3
発表の流れ
• キーワードの定義
• 宿題の答え
• プログラムによる検証
4
クラス
オブジェクト
クラスオブジェクト
インスタンス
キーワード
5
〇〇クラス
クラス、オブジェクトについて
オブジェクト
クラス(型)を定義しているもの(概念)。
メモリ上存在する対象、プログラムが参照できるもの。クラスオブジェクトとインスタンスオブジェクトの総称
6
クラスオブジェクト、インスタンスについて
クラスがメモリ上存在する実体( entity )。クラスオブジェクト自体の型は java.lang.-Class 。
Class<T> は T クラスオブジェクトと言える。 .class
インスタンス(オブジェクト)
new X() する時、生成した X 型の実例、必ずメモリ上にも生成されるので、直接インスタンスと言いって誤解はない。
〇〇クラスオブジェクト
クラスからオブジェクトに変換( .class )するClass<ClassA> clzobj = ClassA.class;
7
public class ClassA(){}Class<ClassA> clzobj = ClassA.class;ClassA newclassA = new ClassA();
例で言うと
• ClassA はクラス。
• clzobj は ClassA のクラスオブジェクト、それ自体はClass 型のオブジェクト、名前は ClassA 。
• newclassA は ClassA のインスタンス。
8
Java のオブジェクトシステムのインスタンス、
クラス、スーパークラス、それぞれがなにへの
ポインタを保持しているか
宿題1
?
9
int
reference
int
double
Java stack Java heap
Method Area
Instance(entit
y)
class object
pointer
class object
(entity)
オブジェクトへのアクセス
static 変数は Permanent Area で管理されます
10
Object インスタンス中のポインター
(java.lang.Object)
entity(superclass)
Object の場合は NULL
11
クラス
クラスオブジェクト インスタンス
宿題2
Class クラス、 Object
クラス、 Object イン
スタンスの関係
12
java.lang.Class
java.lang.Object
Class クラスと Object クラス
クラスを表現するためのクラスであり、クラスの情報にアクセスしたり、操作したりするためのクラスです。いわゆるメタクラスです。
すべての Java オブジェクトのルートクラスです。
13
java.lang.-Class
オブジェクト
My-Class
.class
getClass()
.class
MyClassオブジェク
ト
.class
java.lang.-Class
new
new
java.lang.Ob-ject
オブジェクトgetClass()
Meta-Class
getClass()
newInstance
getClass()
クラス、クラスオブジェクト、インスタン
スの関係
オブジェクト
java.lang.Ob-ject
my-classin-
stance
my-classin-
stance
my-classin-
stance
14
まとめ
対応 new
newInstance()
getClass()