Java Base b = new Derived(); 继承问题

Ete*_*ght 5 java inheritance

使用以下命令创建新实例时会发生什么:

Base b = new Derived();
Run Code Online (Sandbox Code Playgroud)

我无法理解这背后的机制.

Ami*_*far 5

引用b是 type Base。但实现是Derived. 这意味着您可以将其用作 aBase但它将表现为Derived. 做b instanceof Derived将是真的,因为实现是类型Derived


sse*_*ano 3

基本上,从那时起,编译器会看到一个Base实例,并且在运行时该实例的类型为Derived

在更广泛的解释中,Base类型可能是一个接口,因此您可以通过契约知道方法有什么以及它做什么Polymorphism。但你是从实现中抽象出来的。