zoukankan      html  css  js  c++  java
  • 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了一个子类对象,并调用了方法。执行了父类非静态代码块--父类的无参构造函数
    * 然后才是子类的非静态代码块--子类的构造函数--子类的方法
    * */
    }

    }

    结果:

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

  • 相关阅读:
    打印九九乘法三角形的各种思路
    7-14 倒数第N个字符串
    7-13 求阶乘序列前N项和
    7-12统计学生成绩
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.3 Propositional Equivalences
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.2 Applications of Propositional Logic
    Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.1 Propositional Logic
    [Mac Terminal] ___切换到其他路径和目录
    [Mac Terminal] ___MAC终端清屏快捷键
    部署flask到linux服务器
  • 原文地址:https://www.cnblogs.com/0914lx/p/6483653.html
Copyright © 2011-2022 走看看