java - 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);
}
}
解决方案
这不仅仅是 likestatic
或dynamic binding
。Java中没有polymorphism
for fields
,只有methods
.
变量决定总是在compile-time
.
因此,在upcasting
基类变量期间将被取走。
推荐阅读
- python - 计算掩码numpy数组的给定轴的模式
- eclipse - 在mac中设置我的maven项目后无法在eclipse中启动tomcat
- wmi - WMI_EXPORTER textfile_inputs 不工作?
- qt - Qt initializeOpenGLFunctions 使应用程序崩溃
- memory - 如何使用没有 RAM 的微控制器?
- php - 是否可以使用 php 滚动到容器底部?
- python - 如何使用python屏蔽输入并显示最后4位数字
- ruby-on-rails - ruby gem 版本应该与主要 ruby 版本匹配吗?
- python - 复杂策略中的@composite vs flatmap
- javascript - 我需要在#menu(绝对固定的div)下隐藏文本和图像但保留背景