次のコードを使用します。
IFoo foo = new FooImplementation();
識別子foo
には次の 2 つのタイプがあります。
IFoo
- これは、コンパイラが強制する型です。コントラクトの一部であるメソッドのみを呼び出すことができIFoo
ます。そうしないと、コンパイラ エラーが発生します。FooImplementation
- これは、ランタイムによって認識されるタイプです。実行時に にダウンキャストfoo
してから、 のFooImplementation
非 IFoo メソッドを呼び出すことができますFooImplementation
。
私の質問:これら 2 つのタイプの適切な用語は何ですか。私は学校でそれが識別子のstatic typeであり、そのdynamic typeであると教えられたことを誓うことができますが、Googleで多くの検索を行った後、これへの参照が見つからないようです。IFoo
FooImplementation