java类执行顺序

加载器第一次加载某一个类时,执行顺序如下:

  1. 先执行父类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
  2. 执行当前类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
  3. 执行当前类成员的默认赋值,int-0, boolean - false等
  4. 执行当前类的构造方法,显示或者掩式调用父类的构造方法,如果构造方法代码块中有this,则在父类构造中就表示调用父类的属性,子类中就是调用子类的属性;如果父类还有父类的话,会调用它的父类构造方法
  5. 执行父类的非静态成员赋默认的初始值, int -0 boolean-false等
  6. 如果父类成员有显示赋值,则为其赋值
  7. 执行父类构造方法的其他代码块
  8. 如果子类成员有显示赋值,则为其赋值
  9. 执行子类构造方法其他代码块
    出个题考考:
public class Test extends father{

	int i = 222;
	
	public Test(){
		super();
		display();
		this.display();
	}
	
	public void display(){
		System.out.println(i+"--");
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Test();
	}

}


class father{
	private int i = 2;
	
	public father(){
		System.out.println(this.i);
		display();
		this.display();
	}
	
	public void display(){
		System.out.println(i + "88");
	}
}

先自己思考思考

答案在这儿:
2
0–
0–
222–
222–

总结:

  1. 静态变量先父类后子类
  2. 这儿精简重点:
public father(){
		// 当前类成员默认赋初值
		// i =0

		//掩式或者显示调用父类构造方法,父类的构造方法也是如下步骤的
		super();
		
		// 当前类成员显示赋值,如果存在的话
		i = 2;
		//其他代码块
		display();
	}

搞定,如有不对请指正

C++ 权限

public 类里、外都可以访问该成员,public、protect继承时内外都可以调用该方法

protected 类里面可以访问该成员,外面不可访问,继承时也是只能在类里面调用

private 类里面可以访问,继承不可访问,友元可以访问

posted @   帅气好男人_jack  阅读(3)  评论(0编辑  收藏  举报  
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示