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

知识点:

        1)、构造一个类对象,必须先构造它的父类对象。

        2)、初始化一个类必须先初始化它的属性。

        即:一个类先执行它的构造方法,构造方法方法之前需要执行super(),然后是成员变量,最后是构造函数内部的语句。

下面是一个例子:

public class Test {
	private String name="jack";//顺序4:执行成员变量
	private int age=20;//顺序5:
	public Test(){//顺序3:在调用构造函数之前先要调用super();
		//super();对super的调用必须是在构造函数的第一个语句
		age=1000;//顺序6:在执行成员变量之后就执行构造函数内部语句
	}
	public static void main(String[] args) {//顺序1:main函数是一个程序的入口
		Test t=new Test();//顺序2:new对象调用构造函数
		System.out.println(t.name+","+t.age);//顺序7:结果为jack,1000
	}
}

程序的执行顺序:先静态(先父类再子类),再非静态(先父类再子类)

                            整个程序的运行过程中,静态块只执行一次,而且内膜版对象只有一个(静态块通常在连接数据的时起初始化的作用)。

public class Test2 {
	public static void main(String[] args) {
		new A();
	}
	
}
class A extends B{
	{System.out.println("A成员。。。。。。");}
	static{System.out.println("A静态块");}
	public A(){
		System.out.println("A的构造函数");
	}
}
class B extends C{
	{System.out.println("B成员。。。。。。");}
	static{System.out.println("B静态块");}
	public B(){
		System.out.println("B的构造函数");
	}
}
class C{
	{System.out.println("C成员。。。。。。");}
	static{System.out.println("C静态块");}
	public C(){
		System.out.println("C的构造函数");
	}
}

猜你喜欢

转载自blog.csdn.net/e286878553/article/details/80738674
今日推荐