使用以下方法创建新实例时会发生什么:
Base b = new Derived();
我无法理解这背后的机制。
答案 0 :(得分:4)
基本上,从那时起,编译器会看到Base
实例,并且在运行时,实例的类型为Derived
。
在更广泛的解释中,Base
类型可能是一个接口,因此您可以通过合同知道哪种方法有什么以及它做什么Polymorphism
。但是你从实现中抽象出来。
答案 1 :(得分:3)
对b
的引用是Base
类型。但实施是Derived
。这意味着您可以将其用作Base
,但它将表现为Derived
。执行b instanceof Derived
将是正确的,因为实现的类型为Derived