A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一。JAVA中执行顺序
静态块

构造器
父类构造器
   二。JAVA中赋值顺序
      静态块直接赋值
      块直接赋值
      父类继承的属性已赋值
      静态变量声明时赋值
      成员变量声明时赋值
      构造器赋值




2 个回复

正序浏览
哇,很晚了,lz辛苦,早点睡吧
回复 使用道具 举报
  1. public class Main extends PP{
  2.         static{//子类的静态初始块
  3.                 System.out.println("Main:Static Block Init");
  4.         }
  5.         static int a=U.f("Main:static a Init");//子类的静态域
  6.         {//子类的普通初始块
  7.                 System.out.println("Main:Block Init");
  8.                 d = 10;//尽管d在后面定义的,但这里已经有效。
  9.         }
  10.         int d=U.f("Main:d Init");//子类的成员变量
  11.         public Main() {//子类的无参构造方法
  12.                 System.out.println("Main:Construct Init");
  13.         }
  14.         public static void main(String[] rgs) {
  15.                 new Main();//new一个子类对象
  16.         }
  17. }
  18. class PP{//父类
  19.         static int c = U.f("PP:static c Init");//父类的静态域
  20.         int b=U.f("PP:b Init");//父类的成员变量
  21.         static{//父类的静态初始块
  22.                 System.out.println("PP:Static Block Init");
  23.         }
  24.         {//父类的普通初始块
  25.                 System.out.println("PP:Block Init");
  26.         }
  27.         PP(){//父类的无参构造方法
  28.                 System.out.println("PP:Construct Init");
  29.         }
  30. }
  31. class U{
  32.         static int f(String s){
  33.                 System.out.println(s);
  34.                 return 1;
  35.         }
  36. }
复制代码
最先开始的就是类的静态域和静态初始块,这两者先后顺序以在代码中出现的顺序为准。先是父类的静态部分,再是子类的静态部分。
接着是父类的成员变量和普通初始块,两者先后顺序依然以在代码中的出现顺序为准。这两者完成后,是父类的构造方法。
接下来才是子类的成员变量和普通初始块,先后顺序依然以代码里的先后顺序为准,最后才是子类的构造方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马