这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

类中包含7中成员:

1、静态变量 static

2、final静态常量 final static

3、静态代码块 static{} //多个代码块顺序执行

4、普通变量

5、普通代码块 {} //多个代码块顺序执行

6、构造方法

7、普通方法

类中成员初始化方式(排出7):

非继承类中:

首先执行1/2/3,执行顺序为顺序执行(谁在前先执行谁)。

之后执行4/5,执行顺序为顺序执行(谁在前先执行谁)。

然后执行6(默认执行无参构造方法)。

继承类中:

首先执行父类1/2/3,执行顺序为顺序执行(谁在前先执行谁),

随即执行子类1/2/3,执行顺序为顺序执行(谁在前先执行谁)。

之后执行父类4/5,执行顺序为顺序执行(谁在前先执行谁),

然后执行父类6(如果子类没有调用父类构造方法,则默认调用父类默认无参构造方法)。

随即执行子类4/5,执行顺序为顺序执行(谁在前先执行谁)。

然后执行子类6。

代码:

* 每个属性设置断点,启动后可以观察执行顺序。

父类:

package com.lookcoder.haircutmember.vo;

public class TRoleVoAFather {

private String nameFather = "12";

private Integer ageFather = 1;

private int ageiFather = 1;

{

System.out.println("father defualt method block2");

}

private String defualtInitFather = getDefaultInit();

{

System.out.println("father defualt method block1");

}

private String getDefaultInit() {

return "father default init";

}

// ----------------------------------------------------------------------------

private static String aFather = "2";

private final static String aaFather = getFinalStatic();

static {

System.out.println("father default static method2");

}

private static Integer bFather = 1;

static {

System.out.println("father default static method1");

}

private final static Integer bbFather = 2;

private static String getFinalStatic() {

return "father final static aa";

}

private final static Boolean bo = true;

// ----------------------------------------------------------------------------

TRoleVoAFather() {

System.out.println("father default construct");

}

TRoleVoAFather(String name, Integer age) {

this.nameFather = name;

this.ageFather = age;

}

// ----------------------------------------------------------------------------

public void abc() {

System.out.println("abc method!");

}

}

子类:

package com.lookcoder.haircutmember.vo;

public class TRoleVoA extends TRoleVoAFather{

private int agei = 1;

{

System.out.println("defualt method block2");

}

private Integer age = 1;

{

System.out.println("defualt method block1");

}

private String name = "12";

private String defualtInit = getDefaultInit();

private String getDefaultInit() {

return "default init";

}

// ----------------------------------------------------------------------------

private final static Integer bb = 2;

private final static String aa = getFinalStatic();

private static String getFinalStatic() {

return "final static aa";

}

private final static Boolean bo = true;

private static String a = "2";

private static Integer b = 1;

static {

System.out.println("default static method2");

}

static {

System.out.println("default static method1");

}

private static Integer b11= 1;

// ----------------------------------------------------------------------------

TRoleVoA() {

System.out.println("default construct");

}

TRoleVoA(String name, Integer age) {

super(name, age);

this.name = name;

this.age = age;

}

// ----------------------------------------------------------------------------

public void showDefault() {

System.out.println("show default method!");

}

}

启动类:

package com.lookcoder.haircutmember.vo;

public class TRoleVoARun {

public static void main(String[] args) {

TRoleVoA tRoleVo = new TRoleVoA("123", 123);

tRoleVo.showDefault();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java类成员初始化_简单了解Java类成员初始化顺序相关推荐

  1. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  2. Java抽号系统_简单实现java抽奖系统

    简单实现java抽奖系统 发布于 2020-3-11| 复制链接 摘记: 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下用户信息类 ```java /* * 用户信息类 * 1. ...

  3. java的同步关键字_简单了解Java synchronized关键字同步

    简单了解Java synchronized关键字同步 发布于 2021-1-13| 复制链接 摘记:  synchronized synchronized可以用来同步块,同步方法.同步块可以用来更精确 ...

  4. java完成九宫格数独_简单实现java数独游戏

    本文实例为大家分享了java数独游戏的具体代码,供大家参考,具体内容如下 打算把javaFx需要的组件装好以后直接用javaFx的,但似乎eclipse的版本不对,安装了也不能用... 数独代码是在之 ...

  5. java编译时注解_简单介绍 Java 中的编译时注解

    1. 前言 上一篇 主要介绍了什么是 注解 (Annotation) 以及如何读取 运行时注解 中的数据, 同时用注解实现了简单的 ORM 功能. 这次介绍另一部分: 如何读取 编译时注解 ( Ret ...

  6. java catch中抛出异常_简单了解Java编程中抛出异常的方法

    任何Java代码都可以抛出异常,如:自己编写的代码.来自Java开发环境包中代码,或者Java运行时系统.无论是谁,都可以通过Java的throw语句抛出异常.从方法中抛出的任何异常都必须使用thro ...

  7. java 不定长参数_简单介绍Java的不定长度参数

    本文版权归作者所有,仅供用来网上学习来用,读者可以收藏,请不要下载到本机和重新发布到其它网站 先看两个简单的例子,来感受一下Java的不定长度参数 第一个例子: public class VariAr ...

  8. java构造方法怎么写_简单了解JAVA构造方法

    怎么写 java构造方法必须满足以下语法规则: (1) 方法名必须与类名相同. (2)不要声明返回类型. (3)不能被static.final.synchronized.abstract和native ...

  9. java xmlrpc2.0 实现_简单的java xmlrpc

     简单的 XMLRPC java---XmlRpcClient package com.company; import org.apache.xmlrpc.XmlRpcClient; import ...

最新文章

  1. 浏览器默认标签样式总结及css初始化程序(转)
  2. POJ-1430 Binary Stirling Numbers 组合数学
  3. 脑源(brainsourcing)技术可以自动识别人类的偏好
  4. idea+docker 快速部署项目
  5. ldap数据库--ODSEE--复制协议
  6. Nacos源码覆盖实例列表
  7. 如何解决CMST_SI_PARTNER_PART_EXEC missing问题
  8. 用matlab生成ASK FSK PSK,通信原理课程设计(matlab实现ASK FSK PSK).doc
  9. jqgrid mvc_jqGrid,REST,AJAX和Spring MVC集成
  10. python里写在文件的指定行_python文件操作如何写在指定的行
  11. [Linux]信号量
  12. 链表题目---3 合并两个有序单链表 和 分割链表
  13. EEPlat 主子表和对象引用配置实例
  14. 关于直播,所有的技术细节都在这里了(四)
  15. 【大数据部落】银行信用数据SOM神经网络聚类实现
  16. angularJs模版注入的两种方式
  17. blob:https视频下载m3u8视频在线下载
  18. 论文:YOLOX: Exceeding YOLO Series in 2021
  19. Centi和HandCash共同开发支付握手协议
  20. 基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能

热门文章

  1. 如何写出优雅的异常处理
  2. Redis实战(八):面试常问:击穿,穿透,雪崩,分布式锁,API(jedis,luttce,springboot:low/high level)
  3. 【Python】校选课 第四周作业 py3.0
  4. 【PAT甲级 约会】1061 Dating (20 分) C++ 全部AC
  5. JDK14的新特性:JFR,JMC和JFR事件流
  6. Flume 1.7 源码分析(三)程序入口
  7. C/C++中输入带空格的字符串 string 转 char*
  8. BSP细分时代即将来临
  9. python分词和词频统计
  10. String,char,数组,列表 相互转化 (更新中)