gpt4 book ai didi

java静态绑定(bind)和多态性

转载 作者:行者123 更新时间:2023-12-01 22:42:53 24 4
gpt4 key购买 nike

我对下面的静态绑定(bind)示例感到困惑。我认为 S2.xS2.y 显示静态绑定(bind),因为它们根据 s2 的静态类型打印出字段。并且 S2.foo() 使 s2 调用父类(super class)中的 foo 方法,因为 foo 还没有结束骑在子类中。

但是对于S2.goo(),它不是应该调用Test1子类中的goo()方法吗?就像多态性一样?怎么是静态绑定(bind)呢?看起来 S2.goo() 调用了父类(super class) goo() 方法并打印出 =13。非常感谢您提前提供的帮助!

public class SuperClass {
public int x = 10;
static int y = 10;
protected SuperClass() {
x = y++;
}
public int foo() {
return x;
}
public static int goo() {
return y;
}
}

和子类

public class Test1 extends SuperClass {
static int x = 15;
static int y = 15;
int x2= 20;
static int y2 = 20;

Test1()
{
x2 = y2++;
}
public int foo2() {
return x2;
}
public static int goo2() {
return y2;
}

public static int goo(){
return y2;
}

public static void main(String[] args) {

SuperClass s1 = new SuperClass();
SuperClass s2 = new Test1();
Test1 t1 = new Test1();

System.out.println("S2.x = " + s2.x);
System.out.println("S2.y = " + s2.y);
System.out.println("S2.foo() = " + s2.foo());
System.out.println("S2.goo() = " + s2.goo());
}
}

最佳答案

在 Java 中,静态变量和方法不是多态的。您不能期望静态字段具有多态行为。

关于java静态绑定(bind)和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com