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.按照成员表明量定义顺序进行初始化

        

  • 相关阅读:
    转载一篇文章 python程序员经常犯的10个错误
    外部表与partition
    grpc 入门(二)-- 服务接口类型
    用例图简介(转)
    UML类图(Class Diagram)中类与类之间的关系及表示方式(转)
    快速搭建fabric-v1.1.0的chaincode开发环境
    ubuntu networking 与 network-manager
    [转]bashrc与profile区别
    超矩链--基于矩阵的分布式账本
    adb 在windows7中的使用
  • 原文地址:https://www.cnblogs.com/alternative/p/7463420.html
Copyright © 2011-2022 走看看