java类执行顺序

加载器第一次加载某一个类时,执行顺序如下:

  1. 先执行父类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
  2. 执行当前类的静态变量和静态代码块,如果有初值为其赋值,没有就赋值默认初始值
  3. 执行当前类成员的默认赋值,int-0, boolean - false等
  4. 执行当前类的构造方法,显示或者掩式调用父类的构造方法,如果构造方法代码块中有this,则在父类构造中就表示调用父类的属性,子类中就是调用子类的属性;如果父类还有父类的话,会调用它的父类构造方法
  5. 执行父类的非静态成员赋默认的初始值, int -0 boolean-false等
  6. 如果父类成员有显示赋值,则为其赋值
  7. 执行父类构造方法的其他代码块
  8. 如果子类成员有显示赋值,则为其赋值
  9. 执行子类构造方法其他代码块
    出个题考考:
public class Test extends father{

    int i = 222;
    
    public Test(){
        super();
        display();
        this.display();
    }
    
    public void display(){
        System.out.println(i+"--");
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Test();
    }

}


class father{
    private int i = 2;
    
    public father(){
        System.out.println(this.i);
        display();
        this.display();
    }
    
    public void display(){
        System.out.println(i + "88");
    }
}

先自己思考思考

答案在这儿:
2
0--
0--
222--
222--

总结:

  1. 静态变量先父类后子类
  2. 这儿精简重点:
public father(){
        // 当前类成员默认赋初值
        // i =0

        //掩式或者显示调用父类构造方法,父类的构造方法也是如下步骤的
        super();
        
        // 当前类成员显示赋值,如果存在的话
        i = 2;
        //其他代码块
        display();
    }

搞定,如有不对请指正

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,687评论 0 11
  • 1.父类静态代码块(只进行一次) 2.子类静态代码块(只进行一次) 3.父类属性类的静态代码块(只进行一次) 4....
    翔战士阅读 400评论 0 1
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,614评论 4 12
  • 后来长大,才知道成人的世界没有容易二字。 想简单记录一下一个并不充实也不精彩的大学生活。 先写大四吧,匆匆忙忙爬到...
    Sandysun_阅读 495评论 0 1