首页 > 编程语言 >java 中类的加载顺序

java 中类的加载顺序

时间:2022-12-01 20:03:00浏览次数:47  
标签:初始化 java 静态 子类 System println 父类 中类 加载



JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的;

静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。

先初始化父类的静态代码--->初始化子类的静态代码-->
初始化父类的非静态代码--->初始化父类构造函数--->
初始化子类非静态代码--->初始化子类构造函数

看一段代码

package test;

class Parent
{
public static int t = parentStaticMethod2();
{
System.out.println("父类非静态初始化块");
}
static
{
System.out.println("父类静态初始化块");
}
public Parent()
{
System.out.println("父类的构造方法");
}
public static int parentStaticMethod()
{
System.out.println("父类类的静态方法");
return 10;
}
public static int parentStaticMethod2()
{
System.out.println("父类的静态方法2");
return 9;
}

@Override
protected void finalize() throws Throwable
{
// TODO Auto-generated method stub
super.finalize();
System.out.println("销毁父类");
}

}

class Child extends Parent
{
{
System.out.println("子类非静态初始化块");
}
static
{
System.out.println("子类静态初始化块");
}
public Child()
{
System.out.println("子类的构造方法");
}
public static int childStaticMethod()
{
System.out.println("子类的静态方法");
return 1000;
}
@Override
protected void finalize() throws Throwable
{
// TODO Auto-generated method stub
super.finalize();
System.out.println("销毁子类");
}
}


public class Test{
public static void main(String[] args) {
Parent p=new Parent(); //1
// Parent.parentStaticMethod(); //2
// Child c=new Child(); //3
}
}

1.只运行main里第1行代码结果:

父类的静态方法2
父类静态初始化块
父类非静态初始化块
父类的构造方法

2.只运行main里第2行代码结果:

父类的静态方法2
父类静态初始化块
父类类的静态方法

3.只运行main里第3行代码结果:

父类的静态方法2
父类静态初始化块
子类静态初始化块
父类非静态初始化块
父类的构造方法
子类非静态初始化块
子类的构造方法

标签:初始化,java,静态,子类,System,println,父类,中类,加载
From: https://blog.51cto.com/u_15899184/5904066

相关文章

  • java中集合中删除特定元素
    总结有三种方式:importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;publicclassMain{publicstaticvoidmain(String[]args){/*......
  • JAVA8-用lamda表达式和增强版Comparator进行排序
    以前的排序一般对象实现Comparable或者Comparator接口,经常是通过匿名类类实现。可以参见以前的博文Java中​​Comparable和Comparator比较​​现在看看使用lamda......
  • java-正则表达式
    1.一般流程Patternp=Pattern.compile("a*b");Matcherm=p.matcher("aaaaab");booleanb=m.matches();或booleanb=Pattern.matches("a*b","aaaaab");booleanb......
  • Java 集合框架4:Set
    目录Set1.概述2.SortedSet3.实现HashSetEnumSetCopyOnWriteArraySetBitSetSet1.概述Set是一个不允许包含重复元素,或者说是不允许包含包含满足e1.equals(e2)的两个元素......
  • JavaScript Everywhere All In One
    JavaScriptEverywhereAllInOnetagsjsNode.jsExpress.jsMongoDBApolloClientGraphQLAPIJWTOAuth2.0ReactReactNativeElectronhttps://github.com/......
  • AlmaLinux 9.1中安装java11
     001、系统[[email protected]]#cat/etc/redhat-releaseAlmaLinuxrelease9.1(LimeLynx)  002、测试java命令[root@PC1test]#javabash:java:c......
  • Java文件操作实例浅析
    Java文件操作实例浅析1.   实例一:创建文件和目录在java.io包中有一个专门用于文件操作的类File类。此类提供了文件很多操作,如创建文件、删除文件、创建目录、删除目录等......
  • C、C++、Java语言中异常处理机制浅析
    C、C++、Java语言中异常处理机制浅析一、    异常处理(ExceptionalHandling)概述1.    异常处理异常处理又称异常错误处理,它提供了处理程序运行时出现任何意外或......
  • java安全组放行
    使用JAVA虚拟机,被安全阻止   解决:控制面板找到JAVA应用,配置JAVA   选择安全属性,编辑站点列表,并点击确定完成修改  ......
  • JAVA整合阿里云OSS/VUE上传阿里云OSS
    前言今天码帮帮系统已经整合到上传项目案例的功能了,这里有一些图片资源需要上传,之前做项目对接过七牛云,也有使用过阿里云的视频点播服务,不过这次对接阿里云的OSS确实有点......