尽管引用了子类,但子类中的变量仍被隐藏

时间:2018-07-25 21:10:38

标签: java inheritance polymorphism data-hiding

练习基本的Java概念时,我编写了这段代码,它的输出非常奇怪。在解释我的问题之前,请参见下面的代码-

public class Demo3{
    public static void main(String args[]){
        A x=new A();
        B y=new B();
        x.m1();
        y.m1();
    }   
}

class A{    
    int a=5;
    void m1(){
        System.out.println(a);
    }
}

class B extends A{
    int a=1;
}

并且编译器显示的输出是-

5
5

现在我的问题是,由于B继承了A,因此输出不应为5和1,因为x.m1()应该绑定到类A的m1()上,而y.m1()应该绑定到a​​的m1()上B类,在B类中,int a将隐藏继承的A类的int a。请告诉我我是否缺少某些概念或有什么问题?

0 个答案:

没有答案