`

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 类的实例化顺序

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

    Java开发技术大全(500个源代码).

    deriveClass.java 子类访问父类变量示例 getLinePara.java 获取命令行参数示例 hasStaticMethod.java 静态成员方法示例 hasStatMember.java 静态成员变量示例 HelloNative.c 用C写的一个小程序 HelloNative....

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义了一个 Point 类 ,并且声明了它的两个变量 x、y 坐标 ,同时实现 init()方法 对 x、y 赋初值 。 class Ponit { int...

    java基础.txt

    面向对象 一种编程思想: 类:是对有具有共同特征和行为的综合。对象是类的具体实现 类的定义: public class 类名{ //类名首字母大写 ,大驼峰命名 ... 修饰代码块 final: 修饰属性 修饰方法 修饰类

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 ...

    java 面试题 总结

    重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    【Java高频面试题】–类的初始化过程以及实例的初始化过程

    静态变量显式赋值代码以及静态代码块的执行顺序,由它们的先后顺序执行,先声明的先执行 ()方法只会执行一次 如以下代码: //静态变量显式赋值代码 private static int j=method(); //静态代码块 static { System....

    超级有影响力霸气的Java面试题大全文档

    重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,...

    Java面试宝典-经典

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    Java开发技术大全 电子版

    3.7.3静态代码块136 3.7.4再论静态成员变量137 3.8main()方法和命令行参数139 3.9结束方法141 3.10本地方法141 3.11本章小结144 第4章继承与多态145 4.1继承的基本原理145 4.2子类对父类的继承146 4.3属性...

    Java面试宝典2010版

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    java面试题大全(2012版)

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

    java经典面试2010集锦100题(不看你后悔)

    C) 子类继承父类,如果父类中只有一个构造方法并且有参数,那么在子类的构造方法中必须先用super调用父类构造方法并传参。 D) 以上说法都不正确。 题目11:d 程序如下: class Test { private int day; public int...

    最新Java面试宝典pdf版

    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

Global site tag (gtag.js) - Google Analytics