`

java中父类、子类及代码块、成员变量之间的执行顺序

    博客分类:
  • java
 
阅读更多

在代码中有类之间有继承关系,父类子类中均有成员变量、普通代码块、静态代码块以及构造方法,那么他们的执行顺序怎么样呢,写了两个类来判断下。

父类:Animal

 

package com.extends03;

public class Animal {

    public String name = "animal1";
    public int age;
    public static String color = "white";
    //构造方法
    public Animal() {
        name = "animal2";
        System.out.println("create Animal..." + name); //先执行成员变量,再执行普通代码块,最后执行构造方法
        //System.out.println(color);
    }
    //普通代码块
    {
        name = "animal3";
        System.out.println("Animal Class codeBlock");
    }
    //静态代码块
    static {
        color = "red";
        System.out.println("Animal Class static codeBlock  " + "经过静态代码块修改静态值:" + color);
    }
    
    public void eat() {
        System.out.println("Animal eat...");
    }
    
}

 子类:Lion

 

 

package com.extends03;

public class Lion extends Animal {
    
    public static String name = "big Lion";
    public Lion() {
        System.out.println("create Lion...");
    }

    public String color = "yellow";
    {
        name = "little lion ";
        color = "white";
        System.out.println(name);
        System.out.println(color);//先执行本类的成员变量,再执行本类普通代码块
        System.out.println("Lion Class codeBlock");
    }
    
    static {
        name = "super Lion";
        System.out.println("Lion Calss static codeBlock  "+ "经过静态代码块修改静态值:" + name);
    }
}

 测试类:

 

 

public class TestExtends {
    public static void main(String[] args) {
        Lion l = new Lion();
        System.out.println("验证静态块是否是只被加载一次");
        Animal a = new Animal();
    }
}

 输出结果:

 

 

Animal Class static codeBlock  经过静态代码块修改静态值:red  //1、父类静态代码块,同时说明静态变量先初始化,然后再执行静态代码块
Lion Calss static codeBlock  经过静态代码块修改静态值:super Lion //2、子类静态代码块,同时说明静态变量先初始化,然后再执行静态代码块//
Animal Class codeBlock //3、父类普通代码块
create Animal...animal2 //4、父类构造方法
little lion 
white
Lion Class codeBlock  //5、子类代码块
create Lion... //6、子类构造方法
验证静态块是否是只被加载一次  //以下结果说明静态代码只在类第一次加载时执行
Animal Class codeBlock    
create Animal...animal2

 

 

分享到:
评论

相关推荐

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

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

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类实例化时,其构造函数(在Java中是`构造器`,在Python中是`__init_...

    Java 普通代码块静态代码块执行顺序(实例讲解)

    在Java编程语言中,了解代码块的执行顺序对于编写高效且无错的代码至关重要。这里我们将深入探讨Java中的普通代码块(实例初始化块)和静态代码块的执行顺序,并通过实例来阐述这一概念。 首先,我们需要明白两种...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...

    由浅入深详解Java 类的实例化顺序

    在子类对象被实例化的过程中,变量、构造方法以及代码块三者的先后顺序为: 1. 父类的静态变量和静态代码块,按代码先后顺序执行 2. 子类的静态变量和静态代码块,按代码先后顺序执行 3. 父类的成员变量和普通...

    java中的static变量,方法,代码块

    在Java编程语言中,`static`关键字扮演着极其重要的角色,它主要用于声明类的成员变量、方法以及代码块为静态。本文将深入探讨`static`在变量、方法和代码块中的应用,通过示例和解释帮助读者更深刻地理解其功能与...

    浅谈Java中父类与子类的加载顺序详解

    在给定的例子中,无论父类还是子类,静态变量和静态初始化块都会按照它们在代码中的顺序依次执行。因此,我们看到"父类--静态变量"、"父类--静态初始化块"、"子类--静态变量"、"子类--静态初始化块"的输出。 2. **...

    java 代码块与静态代码块加载顺序

    在 Java 语言中,代码块和静态代码块的加载顺序是严格按照类的加载顺序执行的。具体来说,类的加载顺序如下: 1. 父类静态代码块 2. 子类静态代码块 3. 父类实例代码块 4. 子类实例代码块 在上面的实例代码中,...

    Java静态代码块作用及执行顺序解析

    在继承关系中,静态代码块的执行顺序是:父类静态代码块 -> 子类静态代码块 -> 父类非静态代码块 -> 父类构造方法 -> 子类非静态代码块 -> 子类构造方法。 静态代码块和静态方法的区别在于:静态代码块是自动执行的...

    java父类和子类初始化顺序的深入理解

    在Java编程语言中,类之间的继承关系涉及到一个重要的概念——初始化顺序。当创建一个子类对象时,不仅子类的实例变量会被初始化,其父类的实例变量也会按一定的顺序进行初始化。理解这个顺序对于编写复杂的多层继承...

    静态代码块

    - 如果父类中有静态代码块,那么在创建子类对象时,父类的静态代码块会先于子类的静态代码块执行。 - 在子类中,如果想要调用父类的构造函数或其他方法,可以使用`super()`关键字。 以上就是关于Java中静态代码块的...

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

    在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...

    类执行顺序小结.doc

    如果类中存在多个构造代码块或成员变量初始化,它们将按照在代码中出现的顺序依次执行。 #### 三、构造方法的执行 构造方法用于初始化类的实例,它们在创建对象时被调用。构造方法的执行顺序遵循以下规则: - ...

    java中子类继承父类,程序运行顺序的深入分析

    在示例中,"========方法体======== "(父类的非静态代码块)和"========无名称方法体======== "(子类的非静态代码块)分别在它们对应的构造方法之前执行。 3. **构造方法**:之后,会调用构造方法来创建对象。...

    Android代码块执行顺序分析总结

    Android代码块执行顺序是指在Java中,代码块、变量、方法的加载顺序是一个重要的知识点,对于Android开发者来说尤其重要。本文将详细介绍Android代码块执行顺序的分析总结。 一、基础知识 在了解Android代码块...

    JAVA面试题解惑系列——类的初始化顺序

    这个顺序可能会导致一些有趣的现象,例如,在父类的构造器中使用某个还未初始化的子类静态成员变量(如果子类静态成员变量的初始化依赖于父类的某些数据或者执行顺序),就可能产生意料之外的行为,因为按照初始化...

    Java类继承初始化顺序

    在Java编程语言中,类继承是面向对象设计的一个核心特性,它允许我们创建一个新类(子类)作为现有类(父类)的扩展。当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、...

    javase子类父类继承关系图解

    在Java编程语言中,继承是面向对象特性的重要组成部分,它允许子类继承父类的属性和方法,从而实现代码的重用与扩展。标题“javase子类父类继承关系图解”指的是对这一概念的可视化展示,帮助初学者更好地理解Java中...

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

    在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...

    Java类的完整构造执行顺序

    而类初始化则是指在类首次被使用时,JVM执行的一系列初始化操作,包括静态变量赋值、静态代码块执行等。 根据题目提供的内容,我们可以总结出Java类构造执行的详细步骤,这些步骤确保了类的正确初始化以及对象的...

Global site tag (gtag.js) - Google Analytics