class Demo {
public static void main(String[] args) {
Zi z= new Zi();
System.out.println(z.a + z.s) ;
z.show();//子类的对象去调用的show,当前对象应该是子类对象啊,为什么输出的结果是父类的成员变量值?
}
}class Fu {
private int a;
String s = "www";

public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}

public void show(){
System.out.println(this.a);
System.out.println(this.s);
System.out.println(this.getClass());
}
}class Zi extends Fu{
int a = 123;
String s = "niao";
}

解决方案 »

  1.   

    你在子类中重写show方法就会调用子类的了
      

  2.   


    你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
      

  3.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
      

  4.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
    父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s
      

  5.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
    父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s好乱的感觉
      

  6.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
    父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s好乱的感觉
    哪乱!
      

  7.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
    父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s好乱的感觉
    哪乱!
    那为什么this.class打印的是子类呢,明显这时候this指向的是子类对象,那为什么this.a却指向的是父类呢???
      

  8.   


    能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了
    为什么this.getClass()显式是子类,缺显示的父类的成员变量
    父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s好乱的感觉
    哪乱!
    那为什么this.class打印的是子类呢,明显这时候this指向的是子类对象,那为什么this.a却指向的是父类呢???
    回答你有分吗
      

  9.   

    这个上有解释,可以看看http://blog.csdn.net/xxqi1229/article/details/6905530