zoukankan      html  css  js  c++  java
  • java中子类继承父类程序执行顺序

    java中子类继承父类程序执行顺序

    • FatherTest.java

        public class FatherTest {
        private String name;
      
        public FatherTest() {
        System.out.println("--父类的无参构造函数--");
        }
      
        public FatherTest(String name) {
        this.name = name;
        System.out.println("--父类的有参构造函数--" + this.name);
        }
      
        static {
        System.out.println("--父类的静态代码块--");
        }
        {
        System.out.println("--父类的非静态代码块--");
        }
      
        public void speak() {
        System.out.println("--父类的方法--");
        }
      
        // 加入一个main程序后
        public static void main(String[] args) {
        System.out.println("--父类主程序--");
        FatherTest father = new FatherTest("父亲的名字");
        father.speak();
        }
        }
      
    • 结果:

    • 执行顺序:静态代码块—主程序—非静态代码块—构造函数—一般方法。

    • SonTest.java

        public class SonTest extends FatherTest {
        private String name;
        static {
        System.out.println("--子类的静态代码块--");
        }
        {
        System.out.println("--子类的非静态代码块--");
        }
      
        SonTest() {
        System.out.println("--子类的无参构造函数--");
        }
      
        SonTest(String name) {
        this.name = name;
        System.out.println("--子类的有参构造函数--" + this.name);
        }
      
        @Override
        public void speak() {
        System.out.println("--子类Override了父类的方法--");
        }
      
        // 然后再加入一个main函数
        public static void main(String[] args) {
        System.out.println("--子类主程序--");
        FatherTest father = new FatherTest("父亲的名字");
        father.speak();
        SonTest son = new SonTest("儿子的名字");
        son.speak();
        }
        }
      
    • 结果:

    • 加入了子类以后,执行顺序有了新的变化,我们可以总结一下。首先第一部分执行的是父类的静态代码块—子类的静态代码块—主程序。这一部分都是执行一次,与建立多少对象没有关系。第二部分new了一个父类对象,并调用了方法。执行了它的非静态代码块—构造函数—一般方法。第三部分new了一个子类的对象,并调用了方法。执行顺序为父类的非静态代码块—父类的无参构造函数,然后是子类的非静态代码块—子类构造函数—子类的方法。

  • 相关阅读:
    学习进度第七周
    NABCD---生活日历
    学习进度第六周
    人月神话阅读笔记(3)
    人月神话阅读笔记(2)
    人月神话阅读笔记(1)
    石家庄地铁查询(双人项目)
    学习进度第五周
    学习进度第四周
    返回一个整数数组中最大子数组的和。(续2)---二维数组
  • 原文地址:https://www.cnblogs.com/renxiuxing/p/9712738.html
Copyright © 2011-2022 走看看