任何人都可以告诉我如何始终打印父类实例变量?

时间:2013-06-14 09:52:03

标签: java

public class A{ 
    int x=20;
    public int getX(){
     return x;
    }
    public void setX(int x){
     this.x=x;
    }
}

public class B extends A{
    int x=10;
   public void setX(int x){
       this.x=x;
     } 
    public static void main(String[] args) {
       B a=new B(); or A a= new B();
       a.setX(30);
       System.out.println(a.getX());/*it will always print parent class X*/
    }
}

2 个答案:

答案 0 :(得分:6)

B中没有getX()方法。它总是会调用继承的方法。如果要模拟运行时多态性,则必须覆盖子类中的继承方法。

答案 1 :(得分:2)

为了获得子功能,你必须覆盖子类中的超类方法。

因此,代码更改为

public class B extends A{
    int x=10;
   public void setX(int x){
       this.x=x;
     } 

  @override
  public int getX(){
    return 6;  // here you overridden that method  return your new value here 
   }
    public static void main(String[] args) {
       B a=new B(); or A a= new B();
       a.setX(30);
       System.out.println(a.getX());/*new value prints*/
    }
}