覆盖java中的变量 [英] overriding a variable in java
本文介绍了覆盖java中的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public class Foo {
public int a = 3;
public void addFive(){
a += 5; System.out.print("f ");
}
}
public class Bar extends Foo {
public int a = 8;
public void addFive(){
this.a += 5;
System.out.print("b " );
}
}
public class Test {
public static void main(String args[]){
Foo f = new Bar();
f.addFive();
System.out.println(f.a);
}
}
我得到输出b 3.为什么不是给b13作为输出。任何人都可以解释。
I am getting output b 3 .why it is not giving b13 as output.Can anyone please explain.
推荐答案
假设类Foo声明如下
class Foo
{
public int a = 3;
public void addFive()
{
a += 5;
System.out.print("f ");
}
}
- 变量没有概念压倒一切。它们只是被屏蔽了。
- 打印3是因为当你使用超类引用来访问变量时,它只访问在超类中声明的变量。 请记住,超类对子类一无所知。
- Variables have no concept of overriding. They are just masked.
- It is printing 3 because, when you use a superclass reference to access a variable, it accesses the variable declared in superclass only. Remember that superclass doesn't know anything about subclass.
这篇关于覆盖java中的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文