目录

继承执行顺序

类中的资源分类:

在子类中创建main方法

在无关类中创建main方法

拓展

代码块

权限修饰符



继承执行顺序

类中的资源分类:

静态成员变量,

静态代码块,

静态方法,

非静态成员变量,

非静态代码块。

非静态方法,

构造方法

main方法

其中        静态资源和main()        执行顺序固定:

1,静态资源:静态成员变量和静态代码块按书写顺序执行,

一般在加载类文件时执行

2,main方法

其他资源的执行时间:

new对象时,构造方法和非静态成员方法和非静态代码块

1,先执行非静态成员变量和非静态代码块:按书写顺序执行

2,构造方法

2.1,先执行父类的非静态代码块,再执行构造方法

2.2,之后执行子类的静态代码块,在执行构造方法

静态成员方法和非静态成员方法,调用的时候才执行

在子类中创建main方法

1,先加载类文件:

1.1,先加载父类的类文件,再加载子类的类文件

1.2,类中类文件加载顺序

1.2.1,先加载声明

只加载静态成员变量的声明,不加载静态成员方法的声明

只加载声明不加载值,无论其声明是否赋值

不加载静态代码块中的变量,因为其相当于局部变量,用完就销毁

静态代码块 和 非静态代码块  相当于方法,{ }里面的内容相当于方法体代码,

其中声明的变量是局部变量,执行完代码块就会销毁

1.2.2,静态代码块和静态变量的执行顺序,是按照书写顺序来的

此处,静态变量的执行  就是  为静态变量赋值

2,执行main方法

2.1,main方法中的代码块,按顺序执行

2.2,执行new对象时,

2.2.1,先访问父类的构造方法,再访问子类的构造方法

2.2.2,访问构造方法时,先访问类中的非静态代码块,然后执行构造方法的方法体代码

详细步骤:执行new子类对象时,

1,先跳转到子类的构造方法的声明上,

2,什么也不执行,跳转到父类的构造方法声明上,

3,什么也不执行,先执行父类的非静态代码,按书写顺序执行,

此时,会初始化成员变量

4,执行完毕父类的非静态代码后,才开始执行构造方法的方法体代码,

此时,会使用        传入的参数        为变量        赋值

5,执行完后跳转到子类的构造方法上,

6,什么也不执行,先执行子类的非静态代码,

此时,会初始化成员变量

7,执行完毕父类的非静态代码之后,才执行子类的构造方法

此时,会使用        传入的参数        为变量        赋值

在无关类中创建main方法

1,先加载main()所在类的类文件,

如果该类静态资源中有与其它类相关的调用,就加载其他类

2,执行main()

2.1,按书写顺序执行代码

2.2,new子类对象时,具体参照上面:

2.2.1,先加载父类的类文件,再加载子类的类文件

2.2.2,先执行父类的非静态代码,再执行父类的构造方法

2.2.3,先执行子类的非静态代码,再执行子类的构造方法

拓展

代码块

代码块相当于一个方法,{ }定义的变量相当于局部变量, 因此

1,代码块中的声明的变量用完即毁

2,代码块中变量不能用权限修饰符修饰

3,使用 静态/非静态代码块 时,最好  先在外面声明变量,然后再在代码块中给变量赋值

权限修饰符

权限修饰符,针对的是访问的位置

public:            所有地方都能访问

protected:      包修饰符,可以在同个包下的任意位置访问

子类修饰符,可以被所有子类访问到

default:          包修饰符,可以在同个包下的任意位置访问

private:          只能被本类访问

因此在不同的类中,类对象能够访问到的字段内容不一样

特例:protected比较特殊

protected修饰的内容,在同个包下和其他修饰符一样,但在不同包下的子类中,想要访问就需要特定的方式:

错误方式:

在不同包下的子类中,通过创建父类对象baseClass,访问protected修饰的内容,编译器会报错,无法解析该字段

正确方式:

通过   创建子类的对象,通过子类对象访问   父类protected修饰的内容

protected修饰符  特例原因  讲解:              为什么子类中不能访问另一个包中父类中的protected方法?_Yang Special的博客-CSDN博客_protected不同包的子类能不能访问父类

Java中继承执行顺序相关推荐

  1. java中程序执行顺序

    ①在java中执行顺序 一 静态初始化块 二 非静态初始化块 三 构造器 四 父类构造器 ② java中的赋值顺序 一 静态初始化块直接赋值 二 非静态初始化块直接赋值 三 父类继承的属性已赋值 四 ...

  2. java 继承执行顺序

    java 中 继承的 执行 顺序 public class A {public A(){System.out.println("A 无参");}public A(int a){Sy ...

  3. java中parent结构_详解java中继承关系类加载顺序问题

    详解java中继承关系类加载顺序问题 实例代码: /** * Created by fei on 2017/5/31. */ public class SonClass extends ParentC ...

  4. Java中控制多线程顺序执行

    Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...

  5. 【总结篇】继承中的执行顺序

    作者:✿✿ xxxflower. ✿✿ <总结篇> 这个专题就记录一些自己在练习中所学习到的. 包括一些不熟悉的芝士点和一些小的细节. 今天我们来总结一下继承中的执行顺序. 首先执行静态的 ...

  6. java的for的执行顺序_对java for 循环执行顺序的详解

    如下所示: for(表达式1;表达式2;表达式3) { //循环体 } 先执行"表达式1",再进行"表达式2"的判断,判断为真则执行 "循环体&quo ...

  7. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

  8. java中重载 参数顺序_Java方法中的参数太多,第4部分:重载

    java中重载 参数顺序 期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来 ...

  9. Unity脚本在层级面板中的执行顺序测试3

    断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...

最新文章

  1. 4g内存 mysql_4G内存 mysql数据库
  2. debug —— C语言 编译时候进行debug的调试
  3. sql语句相似度统计的说明
  4. Compass 更智能的搜索引擎(3)--高亮,排序,过滤以及各种搜索
  5. Asp.net 面向接口可扩展框架之类型转化基础服务
  6. java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务
  7. linux 卸载skype,如何将Skype与Ubuntu Unity集成 | MOS86
  8. 如何在手机上安装Ubuntu Touch 13.10
  9. 实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
  10. mysql的驱动jar包_各版本MySQL数据库驱动程序jar包大全(java连接mysql驱动jar包)
  11. 关于微博api返回内容不全内容
  12. 新丰机器人_韶关新丰:智能巡检开启配电网运维新模式
  13. 使用MATLAB Mapping工具箱创建和编辑地图
  14. python 实验八 函数 (上)
  15. 笔记本手机都能用,轻松实现100W快充,AOHi 100W氮化镓PD 充电器体验
  16. Kali与编程:小白黑客是如何安装Centos8的?(下节更精彩)
  17. php7的新特性有哪些,php7新特性有哪些?
  18. 1004: 惠民工程 (2013年中南大学研究生复试机试 )
  19. 解决无字幕问题--射手影音VS迅雷影音
  20. java dump文件怎么生成和分析-JMAP用法

热门文章

  1. python利用you-get轻松下载B站视频
  2. POI(excel) - WorkBook和Sheet
  3. 通过RS232串口调试服务器
  4. android2.2 倒计时程序eclipse,Android倒计时控件
  5. linux ln 文件夹,Linux ln 命令
  6. 从学习C++到用C++做外挂
  7. 2020会考计算机成绩查询,初中会考成绩查询2020
  8. 关于泛型的super与extends 的set方法
  9. Smarty模板技术
  10. php smarty模板遍历,smarty模板中for循环的扩展插件_PHP教程