运行时多态性

Swa*_*rma 2 java polymorphism

假设我有A级

public class A
{
    public void method()
    {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

还有另一个B类

public class B extends A
{
    public void method()
    {
        //do other stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有以下声明:

A a = new B();
a.method();
Run Code Online (Sandbox Code Playgroud)

这是运行时多态的一个例子吗?如果是,那么a在编译时是否没有对引用进行绑定?

duf*_*ymo 18

编译器会告诉你这不起作用,因为A和B之间没有任何关系可以让你写 A a = new B();

B必须扩展A或两者都必须在其中实现公共接口void method().

您可以通过编译器尝试快速回答这个问题.成为一名实验主义者 - 它比论坛更快.

更新:

它工作,现在B扩展A.你关心的绑定,动态绑定,是在运行时完成的.变量"a"的静态编译时类型是A类; 在运行时,它动态绑定到类型B的引用.是的,我认为这是多态的一个例子.