当前位置: 代码迷 >> J2SE >> Java继承中的有关问题,请高手帮助
  详细解决方案

Java继承中的有关问题,请高手帮助

热度:99   发布时间:2016-04-24 12:21:51.0
Java继承中的问题,请高手帮助
学java不久,写了下面的代码,不是很懂,是有关继承的,请各位高手帮忙

Java code
class A{    public static int x = -1;    A(){        System.out.println("AAA");        System.out.println(x);        System.out.println(getX());    }    public int getX(){        return x;    }}class B extends A{    B(int x){        System.out.println("BBB");        x = x + 4;                System.out.println(x);        System.out.println(getX());    }    public int getX(){        return x + 1;    }}public class ReTest{    public static void main(String args[]){        B b = new B(0);        System.out.println(b.getX());    }}


结果:AAA
  -1
  0 <------------------这里开始
  4
  BBB
  -1
  0
  0

------解决方案--------------------
子类执行构造方法的时候首先执行父类的空的构造方法,输出AAA -1都没有问题
对于你不理解的0为什么不是-1,这个你可以执行一下下面我做过标记的代码,这里实际上调用的是子类的同名方法
Java code
class A{    public static int x = -1;    public A(){        System.out.println("AAA");        System.out.println(x);        System.out.println(this.getX());    }    public int getX(){        System.out.println("super class x:"+x);        return x;    }}class B extends A{    public B(int x){        System.out.println("BBB");        x = x + 4;        System.out.println(x);        System.out.println(getX());    }    public int getX(){        System.out.println("extend class x:"+x);        return x + 1;    }}public class ReTest{    public static void main(String args[]){        B b = new B(0);        System.out.println(b.getX());    }}
  相关解决方案