zoukankan      html  css  js  c++  java
  • 子类继承父类时方法的调用顺序

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

    我们自己创建一个父类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.按照成员表明量定义顺序进行初始化

        

  • 相关阅读:
    weiPHP微信开发框架
    win7系统
    csdn博客频道
    一步一步安装Git控件版本工具
    php源码,php网站源码,php源码下载
    czz数据专家
    禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?
    php禁用函数设置及查看方法详解
    laravel项目thinksns-plus安装出现RuntimeException Symlink from * to * failed错误
    laravel框架使用中错误及解决办法总结
  • 原文地址:https://www.cnblogs.com/alternative/p/7463420.html
Copyright © 2011-2022 走看看