请看以下代码:
IFoo foo = new FooImplementation();
标识符foo
有两种类型:
IFoo
- 这是编译器将执行的类型。我只能调用IFoo
合同中的方法,否则我将得到编译器错误。FooImplementation
- 这是运行时所知道的类型。我可以在运行时将foo
向下转换为FooImplementation
,然后调用FooImplementation
的非IFoo
方法。
我的问题:这两种类型的正确术语是什么?我可以发誓在学校里我们被教导IFoo
是标识符的静态类型,而FooImplementation
是其动态类型,但在Google上搜索了很多后,我似乎找不到任何相关的参考资料。
IFoo
是变量foo
的类型。FooImplementation
是分配给foo
的内存类型。 - D J