面向对象加强--程序执行顺序

1.可能会遇到这样的面试题目:写出下列代码的执行顺序

/***
 * @author 逸川同学
 * 问:程序的执行顺序
 * 可以使用debug的方法来确定
 */
public class Sequence1 {
	String name = "逸川同学";//4
	int age = 10;//5
	public Sequence1(){//3( 在这之前先执行super() )
		age = 100;//6
	}
	public static void main(String[] args) {//1
		Sequence1 sequence = new Sequence1();//2
		System.out.println(sequence.name+","+sequence.age);//7
	}
}
程序先执行main(),然后是main里面的第一行代码

new 一个类对象,先执行她的构造方法,执行这个构造方法之前,值得注意的是需要先执行super()

然后是他的类成员变量,然后才会执行构造方法内部的语句。

最后才执行输出语句。


2.下面是另一个例子:

有四个类,一个是sequence,另外三个分别是T1,T2,T3。他们是继承的关系。

/**
 * 程序执行顺序: 先静态(先父类再子类),,再非静态(先父类再子类)
 * 整个程序执行期间,静态块只执行一次,,而且类模板对象只有一个
 * @author 逸川同学
 * 输出:
		static T3
		static T2
		static T1
		T3成员
		T3构造
		T2成员
		T2构造
		T1成员
		T1构造
 */
public class Sequence2 {
	public static void main(String[] args) {
		new T1();
	}
}
class T1 extends T2{
	{
		System.out.println("T1成员");
	}
	static{
		System.out.println("static T1");
	}
	public T1(){
		System.out.println("T1构造");
	}
}
class T2 extends T3{
	{
		System.out.println("T2成员");
	}
	static{
		System.out.println("static T2");
	}
	public T2(){
		System.out.println("T2构造");
	}
}
class T3{
	{
		System.out.println("T3成员");
	}
	static{
		System.out.println("static T3");
	}
	public T3(){
		System.out.println("T3构造");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值