码迷,mamicode.com
首页 > 编程语言 > 详细

java内部类及类加载顺序

时间:2020-01-11 16:49:22      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:void   创建   and   static   加载顺序   决定   java内部类   xtend   子类   

类加载的统一的原则-----变量定义的先后顺序决定初始化顺序,而在不同变量之间,又存在着某些规则(先静态对象,再非静态对象)

静态代码块属于类,且在类加载时只执行一次,即使后面有类加载的条件也不会再次执行;

类加载条件:

1 创建类的实例
2 访问某个类或接口的静态变量,或者对该静态变量赋值
3 调用类的静态方法
4 反射(如Class.forName(""))
5 初始化一个类的子类,它的父类也会被初始化
6 java虚拟机启动时被表明为启动类的类(java test)
7 jdk1.7开始提供的动态语言 支持 :
java.lang.invoke.MethodHandle实例的解析结果REF——getSatic, REF_putStatic,REF_invokeStatic 句柄对应的类没有初始化,则初始化

示例:

package demo;

import demo.Enclosingone;
import demo.Enclosingone.InsideOne;

class Enclosingone
{
    static int a=100;
    static {
        System.out.println("Enclosingone.enclosing_method():父类静态代码块");
    }
    public Enclosingone() {
        {
            System.out.println("Enclosingone.Enclosingone():父类构造函数");
        }
    } 
    
    {
        System.out.println("Enclosingone.enclosing_method():父类构造代码块");
    }
    
    public void name() {
        {
            System.out.println("Enclosingone.name():父类普通代码块");
        }
    }
    
    public class InsideOne {}

}

class Enclosingone2 extends Enclosingone{
    static {
        System.out.println("Enclosingone2.enclosing_method():子类静态代码块");
    }
    public Enclosingone2() {
        {
            System.out.println("Enclosingone2.Enclosingone2():子类构造函数");
        }
    }
    {
        System.out.println("Enclosingone2.enclosing_method():子类构造代码块");
    }
}
 

public class demo
{
    public static void main(String[] args)
    {
        new Enclosingone2().name();
    }

}

输出结果:

Enclosingone.enclosing_method():父类静态代码块
Enclosingone2.enclosing_method():子类静态代码块
Enclosingone.enclosing_method():父类构造代码块
Enclosingone.Enclosingone():父类构造函数
Enclosingone2.enclosing_method():子类构造代码块
Enclosingone2.Enclosingone2():子类构造函数
Enclosingone.name():父类普通代码块

java内部类及类加载顺序

标签:void   创建   and   static   加载顺序   决定   java内部类   xtend   子类   

原文地址:https://www.cnblogs.com/yunianzeng/p/12180278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!