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

时间:2011-08-28 17:39:41

标签: java inheritance

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

Base b = new Derived();

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

b的引用是Base类型。但实施是Derived。这意味着您可以将其用作Base,但它将表现为Derived。执行b instanceof Derived将是正确的,因为实现的类型为Derived