zoukankan      html  css  js  c++  java
  • 关于类的继承与初始化顺序

     1 public class A extends B {
     2   public String aStr = printString("A 非静态成员变量");
     3   public static String aSta = printString("A 静态成员变量");
     4 
     5   {
     6     System.out.println("A 代码块");
     7   }
     8 
     9   static {
    10     System.out.println("A 静态代码块");
    11   }
    12 
    13   A() {
    14     System.out.println("A 构造函数");
    15   }
    16 
    17   public static void main(String[] args){
    18     System.out.println("A mian()");
    19     A a = new A();
    20   }
    21 }
    22 
    23 class B extends C {
    24   public String bStr = printString("B 非静态成员变量");
    25   public static String bSta = printString("B 静态成员变量");
    26 
    27   {
    28     System.out.println("B 代码块");
    29   }
    30 
    31   static {
    32     System.out.println("B 静态代码块");
    33   }
    34 
    35   B() {
    36     System.out.println("B 构造函数");
    37   }
    38 }
    39 
    40 class C {
    41   public String cStr = printString("C 非静态成员变量");
    42   public static String cSta = printString("C 静态成员变量");
    43 
    44   {
    45     System.out.println("C 代码块");
    46   }
    47 
    48   static {
    49     System.out.println("C 静态代码块");
    50   }
    51 
    52   C() {
    53     System.out.println("C 构造函数");
    54   }
    55 
    56   public static String printString(String s) {
    57     System.out.println(s);
    58     return s;
    59   }
    60 }

    输出结果:

     1 C 静态成员变量
     2 C 静态代码块
     3 B 静态成员变量
     4 B 静态代码块
     5 A 静态成员变量
     6 A 静态代码块
     7 A mian()
     8 C 非静态成员变量
     9 C 代码块
    10 C 构造函数
    11 B 非静态成员变量
    12 B 代码块
    13 B 构造函数
    14 A 非静态成员变量
    15 A 代码块
    16 A 构造函数

    得出结论:

     1 * 类的继承与初始化:
     2 *  1. 父类的静态成员变量
     3 *  2. 父类的静态代码块
     4 *  3. 子类的静态成员变量
     5 *  4. 子类的静态代码块
     6 *  5. 父类的非静态成员变量
     7 *  6. 父类的代码块
     8 *  7. 父类的构造函数
     9 *  8. 子类的非静态代码块
    10 *  9. 子类的代码块
    11 *  10.子类的构造函数
  • 相关阅读:
    C#发邮件
    C#循环遍历mysql
    【转】C#获取当前日期时间(转)
    C#设置DataGridView控件的标题行的高度并且居中显示
    c#窗体实现验证码
    Git 常用命令清单,掌握这些,轻松驾驭版本管理
    Vue 常见面试问题,你可能都知道,但能答好吗?
    Node 爬虫,批量爬取头条视频并保存
    Node 爬虫,批量下载并保存图片
    NodeJS MySql 执行多条sql语句
  • 原文地址:https://www.cnblogs.com/yanwu0527/p/8306388.html
Copyright © 2011-2022 走看看