求这段代码的执行顺序解决办法

求这段代码的执行顺序
public class Client {

public static void main(String[] args) {
Server s=new SimpleServer(1000);
}

}
abstract class Server{
public final static int DEFAULT_PORT=40000;
public Server(){
int port=getPort();
System.out.println("端口号:"+port);
}
protected abstract int getPort();
}

class SimpleServer extends Server{
private int port=100;
public SimpleServer(int _port){
port=_port;
}
@Override
protected int getPort() {
return Math.random()>0.5?port:DEFAULT_PORT;
}
}

求这段代码的执行顺序

------解决方案--------------------
eclipse中,在Server s=new SimpleServer(1000); 这个行加个breakpoint
点debug

进去以后,F6单步执行,看代码一行行的执行,顺序就知道了求这段代码的执行顺序解决办法
------解决方案--------------------
1、创建子类对象时,先回初始化父类
        所以Server s=new SimpleServer(1000);之后先调用先初始化父类Server
2、由于是第一次加载Server,所以会对Server类进行初始化:public final static int DEFAULT_PORT=40000;
3、执行Server的构造器

public Server(){
int port=getPort();
System.out.println("端口号:"+port);
}

int port=getPort();由于在子类中重载了这个方法,根据多态性,其实调用的子类中的方法
4、之后才会初始化子类:

private int port=100;
public SimpleServer(int _port){
port=_port;
}

------解决方案--------------------
要知道整个程序的运行顺序 好像是有点困难 也没有太大的意义

不过 

要想知道某个函数的调用顺序是非常简单的

只需要在函数的第一行 加上一句

(new Exception(“函数名称”+函数参数)).printStackTrace();

如果你知道了 所有函数的调用顺序  也就相当于你知道了整个程序的执行了吧