Java成员变量初始化过程

import java.util.*;

public class Main

{

public static void main(String[] args){

Student s = new Student(5);

s.show();

}

}

class Person{

public Person(){

System.out.println("父初始化");

show();

}

public void show(){

System.out.println("父show");

}

}

class Student extends Person{

public int age=10;

public Student(int age){

super();

//编译后this.age=10插入到这里;

show();

this.age=age;

}

@Override

public void show()

{

System.out.println("子show年龄是"+age);

}

}

打印:

父初始化

子show年龄是0

子show年龄是10

子show年龄是5

变量的初始化顺序:

1.当类第一次使用时,JVM就会加载该类,如果该类存在父类,那么就先加载父类,这是一个递归过程,直到Object为止.

在类加载中,首先进行静态成员变量按照默认值进行初始化,

然后按照在类中声明的顺序执行静态代码块和静态变量的显示初始化.

这个过程从父类到子类,并且只会执行一次!!!

2.当父类与子类的静态代码初始化完成后,如果创建了类的对象,

在初始化子类前,会先对其父类的实例变量进行默认初始化,

然后按照在类中的声明顺序来执行代码块与实例变量的显示初始化,

最后调用父类的构造函数,这也是一个递归过程,直到Object类为止.

(这个过程在每次创建对象时,都会执行!!!)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,688评论 0 11
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,142评论 0 62
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,614评论 4 12
  • 蓝天在树桩上种下种子于是太阳每天东方升起把黎明折磨致死 朝霞这个这个处女沉默中自作多情 于是鸡鸣被刺进晨光墓石 向...
    李一十八阅读 226评论 0 0