资讯专栏INFORMATION COLUMN

Java static变量、作用域、构造函数初始化顺序

Betta / 2455人阅读

摘要:年月日下午父类静态变量父类普通变量父类静态域父类普通域父类构造函数子类静态变量子类普通变量子类静态域子类普通域子类构造函数输出父类静态变量父类静态域子类静态变量子类静态域父类普通变量父

/**
 *
 * 
 * @author wxy
 * @date 2018年10月30日 下午1:45:02 
 */
public class StaticTest {

  public static void main(String[] args) {
    SubClazz sub = new SubClazz();

  }
  
}
class SupClazz {
  private static String supStaticStr = "父类-静态-变量";
  
  private String supNormnalStr = "父类-普通-变量";
  
  static {
    System.out.println(supStaticStr);
    System.out.println("父类-静态-域");
  }
  
  {
    System.out.println(supNormnalStr);
    System.out.println("父类-普通-域");
  }
  
  public SupClazz() {
    System.out.println("父类-构造函数");
  }
}

class SubClazz extends SupClazz {
  private static String subStaticStr = "子类-静态-变量";
  
  private String subNormnalStr = "子类-普通-变量";
  
  static {
    System.out.println(subStaticStr);
    System.out.println("子类-静态-域");
  }
  
  {
    System.out.println(subNormnalStr);
    System.out.println("子类-普通-域");
  }
  
  public SubClazz() {
    System.out.println("子类-构造函数");
  }
}

输出:

父类-静态-变量
父类-静态-域
子类-静态-变量
子类-静态-域

父类-普通-变量
父类-普通-域
父类-构造函数

子类-普通-变量
子类-普通-域
子类-构造函数
备注:「静态变量和静态作用域」,「常规变量和常规作用域」的先后顺序等同于代码出现的先后顺序。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71945.html

相关文章

  • 6.java 代码块

    摘要:构造块优先于构造函数执行,如果存在多个构造代码块,则执行顺序按照定义的顺序依次执行。静态代码块在中使用关键字声明的代码块。同步代码块需要写在方法中。 代码块 在java中用{}括起来的称为代码块,代码块可分为以下四种: 普通代码块 构造代码块 静态代码块 同步代码块 普通代码块 在方法或语句中出现的{}就称为普通代码块。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先...

    tuantuan 评论0 收藏0
  • Java知识点总结(面向对象)

    摘要:知识点总结面向对象知识点总结面向对象面向对象概念是相对于面向过程而言,过程其实就是函数,对象是将函数和属性进行了封装。指向了该对象关键字代表对象。静态变量所属于类,所以也称为类变量成员变量存在于堆内存中。 Java知识点总结(面向对象) @(Java知识点总结)[Java, Java面向对象] [toc] 面向对象概念 是相对于面向过程而言,过程其实就是函数,对象是将函数和属性进行了封...

    itvincent 评论0 收藏0
  • java内存模型

    摘要:顺序一致性内存模型有两大特性一个线程中所有操作必须按照程序的顺序执行。这里的同步包括对常用同步原语的正确使用通过以下程序说明与顺序一致性两种内存模型的对比顺序一致性模型中所有操作完全按程序的顺序串行执行。 java内存模型 java内存模型基础 happen-before模型 JSR-133使用happen-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结...

    2i18ns 评论0 收藏0
  • Java 面向对象(上)

    摘要:对象的引用关键字总是指向调用该方法的对象。根据出现位置的不同,作为对象的默认引用有两种情形。构造器中引用该构造器正在初始化的对象。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。 类和对象 定义类 面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成...

    SimonMa 评论0 收藏0
  • java面向对象(上)

    摘要:根据出现的位置,作为对象的默认引用有两种情形构造器中引用该构造器正在初始化的对象。在构造器中代表该构造器正在初始化的对象。用于限定该对象调用它从父类得到的实例变量和方法。 子类继承父类就可以继承到父类的成员变量和方法。如果访问控制允许,子类实例可以直接调用父类里定义的方法。 如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通代码块里完成,初始化块总在构...

    liaosilzu2007 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<