【发布时间】:2019-10-01 13:19:32
【问题描述】:
我对主题绑定很困惑。 正如我们所知,在静态绑定中,会检查引用的类型以确定绑定,而不是它所引用的对象,而在动态绑定中,会考虑引用所指向的对象的类型。
class A
{
void show()
{
System.out.println("From A");
}
}
class B extends A
{
void show()
{
System.out.println("From B");
}
}
class Main
{
public static void main(String[] quora)
{
A a1 = new A();
A a2 = new B();
a1.show(); //line 1
a2.show(); //line 2
}
}
在上面的例子中,我们可以看到在编译期间,Line1 和 line2 都会被静态绑定处理,它们会链接到 A 类方法 show( 因为引用的类型是 A)。 但在运行时,调用被解析,line1 链接到 A 类方法 show(),line2 链接到 B 类方法,即对象类型,或者我们可以说是动态绑定。
所以我的主要目的是了解以下内容。
动态绑定总是在静态绑定之后产生吗?还是我理解错了?
如果是真的,那么是不是说每个方法在运行时都是动态链接的?
我们可以概括一下吗?
【问题讨论】:
-
我们能概括一下what吗?
-
无论如何,每次方法调用都会有静态绑定和动态绑定。 @Sweeper
-
确实是这样,但我还是不明白你的第二个问题。
-
我已经更新了相同的,以便更容易理解@Sweeper
标签: java polymorphism overriding overloading static-polymorphism