ama*_*mal 3 java inheritance overriding
我在这里可以理解'a1'对于一个以'a = 200'为属性的B类对象.因此,我预计程序将打印200.但为什么这个程序打印100而不是200?
class A{
int a=100;
}
class B extends A{
int a=200;
}
class Demo{
public static void main(String args[]){
A a1=new B();
System.out.println("a : "+a1.a); //Prints 100
}
}
Run Code Online (Sandbox Code Playgroud)
通过在类B中声明与其父类中的字段具有相同名称的字段A,您基本上隐藏了该字段.但是,变量的字段访问是基于该变量的声明/静态类型完成的.
换句话说,字段不是像方法那样的多态实体.
在这种情况下,变量a1声明为type A.因此,访问的字段将是父类中的字段A.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |