假设我有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的引用.是的,我认为这是多态的一个例子.