java类执行顺序
加载器第一次加载某一个类时,执行顺序如下:
- 先执行父类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
- 执行当前类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
- 执行当前类成员的默认赋值,int-0, boolean - false等
- 执行当前类的构造方法,显示或者掩式调用父类的构造方法,如果构造方法代码块中有this,则在父类构造中就表示调用父类的属性,子类中就是调用子类的属性;如果父类还有父类的话,会调用它的父类构造方法
- 执行父类的非静态成员赋默认的初始值, int -0 boolean-false等
- 如果父类成员有显示赋值,则为其赋值
- 执行父类构造方法的其他代码块
- 如果子类成员有显示赋值,则为其赋值
- 执行子类构造方法其他代码块
出个题考考:
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–
总结:
- 静态变量先父类后子类
- 这儿精简重点:
public father(){
// 当前类成员默认赋初值
// i =0
//掩式或者显示调用父类构造方法,父类的构造方法也是如下步骤的
super();
// 当前类成员显示赋值,如果存在的话
i = 2;
//其他代码块
display();
}
搞定,如有不对请指正
C++ 权限
public 类里、外都可以访问该成员,public、protect继承时内外都可以调用该方法
protected 类里面可以访问该成员,外面不可访问,继承时也是只能在类里面调用
private 类里面可以访问,继承不可访问,友元可以访问
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】