在Java中,Object
可以具有运行时类型(即创建时的类型)和强制类型(已强制转换为的类型)。
我想知道这些类型的proper名称是什么。例如
class A {
}
class B extends A {
}
A a = new B();
a被创建为B
,但是被声明为A
。使用每个透视图引用a
类型的正确方法是什么?
expression(例如变量)很重要。 。
在这种情况下:A a = new B();
a
是类型为A
的变量。它在执行时的值是对B
类型的对象的引用。
Java语言规范将“运行时类”(例如,用于覆盖的目的,如section 15.12.4.4中所述)用于对象的类型。在其他地方,我认为它只是将“ type”用作表达式的类型,即编译时类型。
A a = new B();