`
jiaguwen123
  • 浏览: 415179 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

static,构造函数,子类,父类执行顺序

    博客分类:
  • view
 
阅读更多

static变量,构造函数以及父类、子类构造和static执行顺序:

/**
1 每个类初始化时,会先初始化它的static再执行构造方法,
当static已经执行过后,该类的新的实例不会再执行static
2 该类如果继承了某个类则父类的static会先初始化。
3 某个类即便有static main方法,并且该类作为执行类,
在执行main方法的过程中,只要不涉及到该类,则static都不会执行---->修正执行main方法的第一行代码前,会执行该类中定义的static代码块和初始化其中的static变量,按照定义顺序来执行初始化.
*
* 因此,可以得到如下顺序:
* 1 父类static 变量/代码块 初始化(即使父类static是private的也会初始化,只会初始化一次)
* 2 子类static 变量/代码块 初始化
* 3 父类构造方法
* 4 子类构造方法
* static变量和static代码块的初始化顺序按照书写的先后顺序初始化
*
* 子类可以覆盖父类的方法,覆盖的时候可以扩大控制符的范围,而不能缩小范围【如protected-->public可以,protected-->friendly不可】
*
*
*
* 关于子类和父类构造方法参数等不一致时问题
* 1 父类构造函数无参数,子类构造也无参数,且子类该构造函数中未调用或者显式采用super()方式调用时,
* 父类无参构造函数和子类无参构造函数都会执行
* 2 如果子类无参构造函数中,显式调用父类有参构造函数,则父类无参构造函数不会被执行
*
* 由此可以知道:
* 子类初始化时,执行子类构造函数(不管是有参还是无参的子构造函数)之前,默认会首先执行父类无参数构造函数
* 但是如果在子类构造函数(不管是有参还是无参的子构造函数)中,显式调用父类有参构造函数,
则会执行父类被显式调用的有参构造函数而不会执行父类无参构造函数。
* /

分享到:
评论

相关推荐

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    构造函数与静态块的执行顺序

    这段输出明确展示了静态块和构造函数的执行顺序:首先执行的是父类`Person`的静态块,接着是子类`Student`的静态块;之后是`Person`类的构造函数,最后是`Student`类的构造函数。这个顺序体现了Java中继承机制下的...

    构造函数的继承问题 笔记

    为了确保子类能够正确地初始化其父类部分,需要特别注意构造函数的调用顺序与机制。 #### 构造函数的调用规则 根据题目中的描述,我们可以总结出关于构造函数调用的一些关键规则: 1. **默认构造函数的自动调用**...

    构造函数继承.关于java

    2. **构造函数调用顺序**:在子类构造函数中,必须先调用父类的构造函数(使用`super`),然后再执行子类构造函数中的其他代码。 3. **构造函数的可访问性**:子类只能访问具有相同或更宽松访问级别的父类构造函数。...

    14_构造函数 视频

    如果子类没有显式定义构造函数,它将自动获得一个默认构造函数,调用父类的无参构造函数。若子类需要调用父类的有参构造函数,必须通过`super()`关键字来实现。 6. **构造函数与final字段**:对于声明为`final`的...

    java基础测试卷.pdf

    在本例中,子类Child的构造函数调用了this("dd"),这会先执行父类Father的带参数构造函数,再执行子类的构造函数。因此,输出将是“父类有参构造函数”和“子类无参构造函数”。 这些题目涉及了Java的基础语法、...

    Jave构造函数的继承执行顺序

    问题:子类继承父类,构造函数及公共属性的执行顺序是怎样的?  示例代码 <SPAN xss=removed>public class A extends C {  B b = new B();  static H h = new H();  static { ...

    继承与static精选例题

    2. **继承关系中的构造函数执行顺序**:在创建子类对象时,会先执行父类的构造函数,然后再执行子类自己的构造函数。如果父类构造函数中有初始化其他类对象的操作,则会先执行这些对象的构造函数。 3. **构造函数与...

    类继承的初始化顺序类,继承的初始化顺序

    6. **子类构造函数调用**:最后执行子类自身的构造函数。 ### 初始化过程详解 #### 基类构造函数的调用 在创建子类实例时,必须先调用基类的构造函数来完成基类部分的初始化。这通常通过在子类构造函数中使用`...

    java中静态代码块与构造方法的执行顺序判断

    在多级继承关系中,静态代码块按照类的加载顺序执行,先加载的类先执行其静态代码块。 例如,在给定的代码中: ```java public class A { static { System.out.print(1); } public A() { System.out.print(2)...

    java第二章笔记.doc

    继承时,子类不能继承父类的`private`成员,也不能直接继承父类的构造函数,但可以通过构造器链来调用父类的构造函数。如果子类和父类不在同一个包下,那么对于使用默认权限的成员,子类无权直接继承。 初始化顺序...

    Java编程思想重点笔记(Java开发必看)

    由于构造函数的执行顺序是从基类到子类,所以在子类的构造函数运行前,父类的构造函数已经完成了调用draw(),这时子类的成员变量radius尚未初始化,所以输出显示radius为0。当子类构造函数运行后,radius才被赋值,...

    类和对象的初始化过程.zip

    当创建子类对象时,首先会执行父类的构造函数,然后是子类的构造函数。这确保了父类的状态在子类对象创建之前已经正确设置。 4. **静态与非静态成员** 静态成员属于类,而非静态成员属于类的实例。静态成员可以...

    关于java中构造函数的一些知识详解

    总结,Java的构造函数在类的设计中扮演着至关重要的角色,它们负责对象的初始化,可以通过重载提供多种构造方式,而在继承体系中,子类构造函数会自动或显式调用父类的构造函数,确保父类的状态正确初始化。...

    java 基础 类对象创建实例化过程 实例解析

    * 继承树中的从最高层开始的实例语句块{}、然后对应的构造函数、以及构造函数中调用的方法 * (如果是重写即子类将父类的实例方法重写类,则调用子类的,如果是隐藏即方法则父类中声明为静态方法,则调用父类本身的...

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

    静态初始化块的执行顺序是从上到下依次执行的,先执行父类的静态初始化块,然后执行子类的静态初始化块。 在Java中,静态初始化块的执行顺序是由Java虚拟机(JVM)来控制的。JVM在加载类时,会对静态初始化块进行...

    Java面试题解惑系列

    这类问题通常涉及静态与非静态成员变量、静态初始化块、非静态初始化块以及构造函数的执行顺序。下面我们将深入探讨这些概念及其初始化顺序。 #### 一、基础知识回顾 在Java中,类的成员变量可以分为静态变量和...

    java中类的初始化顺序

    7. **构造函数的调用**:最后,构造函数被调用来完成对象的初始化。 #### 四、具体示例分析 1. **单个类的初始化顺序** ```java public class InitialOrderTest { // 静态成员变量 public static String ...

    Java static静态初始快

    当类第一次被加载时,JVM会按照它们在源代码中的顺序执行静态初始化块。 2. **类加载机制**:Java类的加载是懒加载的,即只有在类被首次使用时,JVM才会加载并执行对应的静态初始化块。 3. **静态初始化块与构造...

    JAVA继承_接口_抽象类等练习.doc

    **概念:** 当子类创建对象时,会首先执行父类的构造函数,然后再执行子类的构造函数。这是为了确保父类的初始化逻辑能够先于子类执行。 **选择题示例:** 第13题中,正确答案是A选项:“FatherChild”。这是因为当...

Global site tag (gtag.js) - Google Analytics