• java基础——子类继承父类程序执行顺序


    1、

    public class FatherTest {

    /**
    * @param args
    */
    private String name;

    FatherTest(){
    System.out.println("--父类的无参构造器--");
    }

    FatherTest(String name){
    this.name = name;
    System.out.println("--父类的有参构造器--" + this.name);
    }

    static{
    System.out.println("--父类的静态代码块--");
    }

    {
    System.out.println("--父类的非静态代码块--");
    }

    public void speak(){
    System.out.println("--父类的普通方法--");
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("--父类的主程序--");
    FatherTest ft = new FatherTest("父亲的名字");
    // FatherTest ft2 = new FatherTest();
    ft.speak();
    }

    }
    /**
    * --父类的静态代码块--
    * --父类的主程序--
    * --父类的非静态代码块-
    * --父类的有参构造器--父亲的名字
    * --父类的普通方法--
    * */
    // 1、静态代码块 2、主程序 3、非静态代码库 4、构造函数 5、普通方法

    结果:

    --父类的静态代码块--
    --父类的主程序--
    --父类的非静态代码块--
    --父类的有参构造器--父亲的名字
    --父类的普通方法--

    2、

    package extend;

    public class SonTest extends FatherTest {

    /**
    * @param args
    */
    private String name;

    static{
    System.out.println("子类的静态代码块");
    }

    {
    System.out.println("子类的非静态代码块");
    }

    SonTest(){
    System.out.println("子类的无参构造器");
    }

    SonTest(String name){
    this.name = name;
    System.out.println("子类的有参构造器");
    }

    @Override
    public void speak(){
    System.out.println("子类的普通方法");
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("子类的主程序");
    FatherTest ft = new FatherTest("父亲的名字");
    ft.speak();
    SonTest st = new SonTest("儿子的名字");
    st.speak();
    /*
    首先第一部分执行的是父类的静态代码块--子类的静态代码块--主程序,这部分都是第一次执行
    与建立多少对象没有关系
    */
    /*
    * 第二部分是new了一个父类对象,并调用了方法。执行了他的非静态代码块--构造函数--普通方法
    * 第三部分是new了一个子类对象,并调用了方法。执行了父类非静态代码块--父类的无参构造函数
    * 然后才是子类的非静态代码块--子类的构造函数--子类的方法
    * */
    }

    }

    结果:

    --父类的静态代码块--
    子类的静态代码块
    子类的主程序
    --父类的非静态代码块--
    --父类的有参构造器--父亲的名字
    --父类的普通方法--
    --父类的非静态代码块--
    --父类的无参构造器--
    子类的非静态代码块
    子类的有参构造器
    子类的普通方法

  • 相关阅读:
    cqyz oj | 单峰排列
    cqyz oj/uva 548 | 二叉树
    cqyz oj | 树网的核 | 树的直径
    cqyz oj | 树上的询问 | 最近公共祖先
    cqyz oj | 循环逆序对 | 逆序对 | 树状数组
    cqyz oj | 潜水比赛 | 贪心
    YOLO v3 & Pascal VOC数据集
    太阳爆发分类
    PPT制作
    anaconda
  • 原文地址:https://www.cnblogs.com/0914lx/p/6483653.html
Copyright © 2020-2023  润新知