这段代码的打印过程是怎样的,我是小白,恳求诸位大佬指点一下

package LSQ;

class SuperClass{

	  int x;

	  SuperClass(){

	    x = 3;

	    System.out.println("in SuperClass:x=" + x);

	  }

	  void doSomething(){

	    System.out.println("in SuperClass.doSomething()");

	  }

	}

	class SubClass extends SuperClass{

	  int x;

	  SubClass(){

	    super();

	    x = 5;

	    System.out.println("in SubClass:x=" + x);

	  }

	  void doSomething(){

	    super.doSomething();

	    System.out.println("in SubClass.doSomething()");

	    System.out.println("super.x=" + super.x + " sub.x=" + x);

	  }

	}

	public class Star2{

	  public static void main(String[] args){

	    SubClass subC = new SubClass();

	    subC.doSomething();

	  }

	}

 

执行顺序:

首先,执行入口是main方法,从这里开始执行

再看第一句,SubClass subC = new SubClass(); 会调用SubClass的构造方法

这里面又有super();  这个是调用父类的方法,由于是在构造方法里面,所以super在这里是调用父类的构造方法,把x=3打印出来;打印完x=3,回到子类的构造方法,继续打印x=5

 

上面是构造方法,接下来看main里面的第2句subC.doSomething(); 同理,先调用父类的doSomething,再调用子类的doSomething。

总体的结果是这样的:

 

 

>这段代码的打印过程是怎样的

什么叫“打印过程”?  建议你描述清楚你碰到了什么具体问题。 

可以单步执行你的程序,看看哪一步出了问题。 

其实你问的就是一个类加载过程

记住一点,类加载是先加载父类,再加载子类

第一步new SubClass的时候,会先执行父类的构造函数,再执行子类的

然后执行方法,是根据代码的顺序去调用的