覆盖java中的变量 [英] overriding a variable in java

查看:109
本文介绍了覆盖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 ");
    }
}




  1. 变量没有概念压倒一切。它们只是被屏蔽了。

  2. 打印3是因为当你使用超类引用来访问变量时,它只访问在超类中声明的变量。 请记住,超类对子类一无所知。

  1. Variables have no concept of overriding. They are just masked.
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆