首页 > 解决方案 > JAVA:变量使用静态绑定还是动态绑定?

问题描述

此代码的结果因引用变量的类型而异,这是否意味着变量(int a)以静态方式有界

class A{
    int a = 10;
}
public class Main extends A {
    int a = 30;         
    public static void main(String[] args){             
        A m = new Main();
        System.out.println("A : " + m.a);
    }
}

标签: java

解决方案


这不仅仅是 likestaticdynamic binding。Java中没有polymorphismfor fields,只有methods.

变量决定总是在compile-time.

因此,在upcasting基类变量期间将被取走。


推荐阅读