用于区分运行时类型与编译时类型的Java术语

问题描述 投票:1回答:8

在Java中,Object可以具有运行时类型(即创建时的类型)和强制类型(已强制转换为的类型)。

我想知道这些类型的proper名称是什么。例如

class A {

}

class B extends A {

}

A a = new B();

a被创建为B,但是被声明为A。使用每个透视图引用a类型的正确方法是什么?

java types runtime terminology compile-time
8个回答
9
投票
object(在执行时存在,并且只有其执行时间类型)和具有编译时类型的

expression(例如变量)很重要。 。

在这种情况下:A a = new B();

a是类型为A的变量。它在执行时的值是对B类型的对象的引用。

Java语言规范将“运行时类”(例如,用于覆盖的目的,如section 15.12.4.4中所述)用于对象的类型。在其他地方,我认为它只是将“ type”用作表达式的类型,即编译时类型。

5
投票
声明类型

2
投票
引用

1
投票
A a = new B();

1
投票

0
投票
表观类型

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.