java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?
————下课后————
结论
类的加载顺序。
- (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
- (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
- (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
- (4) 父类构造函数
- (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
- (6) 子类构造函数
例子1
运行下面代码,输出的结果是()
class A { public A() {//构造函数 System.out.println("class A"); } { //代码块 System.out.println("I'm A class"); } static { //静态代码块 System.out.println("class A static"); }}public class B extends A { public B() {//构造函数 System.out.println("class B"); } { //代码块 System.out.println("I'm B class"); } static { System.out.println("class B static"); } //静态代码块 public static void main(String[] args) { new B(); }}
A
class A static class B static I'm A class class AI'm B class class B
B
class A staticI'm A classclass Aclass B staticI'm B classclass B
C
class A staticclass B staticclass AI'm A class class BI'm B class
D
class A staticclass AI'm A classclass B staticclass BI'm B class
例子2
class Print{ Print(){ System.out.println("haha"); }}public class Cats { static { System.out.println("static Casts"); } static Print test1 = new Print();}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}
以上程序输出:
static Castshaha
换一下静态变量和静态代码块的执行顺序。
class Print{ Print(){ System.out.println("haha"); }}public class Cats { static Print test1 = new Print(); static { System.out.println("static Casts"); }}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}以上程序输出:hahastatic Casts
例子3
class Print{ Print(){ System.out.println("haha"); }}public class Cats { Print test = new Print(); Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } public static void main(String [] args) { Cats cat = new Cats(); }}
以上程序输出:
hahaI'm xiaoMengI'm qiaoGeLi
例子4
class Print{ Print(){ System.out.println("haha"); }}public class Cats { Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } Print test = new Print(); public static void main(String [] args) { Cats cat = new Cats(); }}
以上程序输出:
I'm xiaoMenghahaI'm qiaoGeLi
结论
类的执行顺序。
- (1)父类静态变量和静态代码块(先声明的先执行);
- (2)子类静态变量和静态代码块(先声明的先执行);
- (3)父类的非静态属性(变量)和非静态代码块(先声明的先执行);
- (4)父类构造函数
- (5)子类的非静态属性(变量)和非静态代码块(先声明的先执行);
- (6) 子类构造函数
小萌:乔哥辛苦了,给你按摩!
这篇文章和小编写的一篇原创文章很类似,比这篇文章多了一些内容
让你清清楚楚理解Java中成员变量,代码块,构造函数的加载顺序
作者:乔戈里qgl原文:转载自公众号,程序员乔戈里,已获作者授权
java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?相关推荐
- java 线程间通信方式_「转」JAVA多线程之线程间的通信方式
1. 同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信. public class MyObject { synchronized public void m ...
- java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室
继承顺序 当使用继承这个特性时,程序是如何执行的: 继承的初始化顺序 1.初始化父类再初始子类 2.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执行的呢,也就是说 ...
- java 平均分配算法_「角平分线」Java 计算角平分线 - seo实验室
角平分线 有三个点,计算出角平分线.首先要算出两个点之间的方位角,根据方位角算出夹角.下面以角平分线长度是20示例计算. double dStartAngle = Math.atan2(mdE1 - ...
- java keyset entryset 顺序_「entryset」如何遍历Map,map的keySet()和EntrySet()区别 - seo实验室...
entryset 如何遍历Map,map的keySet()和EntrySet()区别 遍历map public static void main(String[] args) { // TODO Au ...
- java 过滤器执行图_「filterchain」java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序 - seo实验室...
filterchain 过滤器拦截到请求之后,首先是执行doFilter()方法中chain.doFilter()之前的代码,然后放弃权限给下一个过滤器或者serverlet等等,最后才执行chain ...
- eclipse折叠if语句块_「03」java中的方法以及控制语句
语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句.块确定了局部变量的作用域.块中的程序代码,作为一个整体,是要被一起执行的.块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明 ...
- java tcp权限控制_「图解」TCP重传、滑动窗口、流量控制、拥塞控制
前言 前一篇35 张图解被问千百遍的 TCP 三次握手和四次挥手面试题得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的. 来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席. 迟到的 ...
- java简单编程_「4」Java简单编程
1.第一个Java程序 ●Java程序开发步骤: ●通过文本编辑器来编写java代码至扩展名为java的文件中. ●调用编译工具javac.exe来对java源文件进行编译,生成扩展名为class的字 ...
- OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)
一. 问: 1.fork出一个子进程,父子进程执行的先后顺序是不确定的,如果先执行父进程,再执行子进程,父进程中没有wait和sleep.问,是否先把父进程执行完,再执行子进程?还是两个进程是一块执行 ...
最新文章
- C++ Data语意学
- Winform模拟post请求和get请求登录网站
- linux系统上手工建库步骤,Linux下Oracle手工建库过程
- 如何量化考核技术人的KPI?
- Mac升级emacs26
- Unity3d使用MeshCollider检测区域
- 文后参考文献著录规则 GB/T 7714-2005
- 矩阵求导法则与性质,机器学习必备~
- js笔记,自封装篇(二)之对象克隆
- libvlc.java_java – LibVlc android无法加载库
- (7)全民小视频引流脚本模块化开发01-关注用户By飞云脚本学院
- 计算机两个活动分区,硬盘无法设置活动分区,硬盘只能有一个活动分区吗
- 用od、ce实现植物大战僵尸自动收集阳光
- git 如何把master分支代码复制到自己的分支
- JVM调优之 -Xms -Xmx -Xmn -Xss
- R语言绘制 正态分布参数的负对数似然函数
- docker swarm的常用操作
- wordpress主题怎样在标签云效果中显示每个标签的文章数?
- 奥克兰大学计算机科学硕士,奥克兰大学计算机硕士解析
- 高通MDM平台-LK
热门文章
- import导入工程时出现error:Description	Resource	Path	Location	Type Target runtime com.genuitec.runtime.gener
- EOS账户系统(4)账户权限分级
- C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词
- C++(九)——职工信息管理系统
- [HOW TO]-官网拉取Trusty-TEE的代码
- python:将32位的16进制数据以二进制/hex/binary的形式写入到文件
- linux kernel变长数组使用示例
- Linux GCC用法
- BeautifulSoup库使用
- vector、map 内存释放