• 子类继承父类时方法的调用顺序


    为了搞清当一个子类继承父类并调用了子类的某个方法时,在父类和子类中各个代码块的执行顺序

    我们自己创建一个父类Parent和一个子类Child,代码如下:

    父类代码

     1 package ParentAndChild;
     2 
     3 public class Parent {
     4     static{
     5         System.out.println("父类静态代码块");
     6     }
     7     
     8     {
     9         System.out.println("父类普通代码块");
    10     }
    11 
    12     public Parent() {
    13         super();
    14         System.out.println("父类构造器方法");
    15     }
    16     
    17     public void A(){
    18         System.out.println("父类A方法");
    19     }
    20     
    21 }

    子类代码:

    package ParentAndChild;
    
    public class Child extends Parent{
        static{
            System.out.println("子类静态代码块");
        }
        
        {
            System.out.println("子类普通代码块");
        }
        
        public Child() {
            super();
            System.out.println("子类构造器方法");
        }
    
        public void A(){
            System.out.println("子类A方法");
        }
        
        public static void main(String[] args){
            Child child =new Child();
            child.A();
        }
    }

    输出结果:

    结论:当一个子类继承父类并调用了子类的某个方法时代码块的执行顺序为 

                                        1)父类静态代码块
                                        2)子类静态代码块
                                        3)父类普通代码块
                                        4)父类构造器方法
                                        5)子类普通代码块
                                        6)子类构造器方法
                                        7)子类A方法

    也就是说遵循的原则如下:

      1.静态(变量)对象优先于非静态(变量)对象

      2.父类优先于子类

      3.按照成员表明量定义顺序进行初始化

        

  • 相关阅读:
    基于requirejs和oclazyloadjs的实际按需加载的angular项目
    vue源码解析data与watcher
    video标签播放数据调整
    ngnix搭建前端服务
    面试总结篇(一)
    mongodb的安装、配置、启动、数据库密码的配置;
    今天随手写个发布订阅的 event.js
    Mac OS系统使用的链接,以及关于前端软件的安装(持续更新)
    bind 以及原型 1px边框的实现(面试后内容整理)
    flexbox的学习,display:flex display:box 淘宝触屏版、饿了么网布局分析分析
  • 原文地址:https://www.cnblogs.com/alternative/p/7463420.html
Copyright © 2020-2023  润新知