java 内部类 加载_java内部类及类加载顺序

package demo;

import demo.Enclosingone;

import demo.Enclosingone.InsideOne;

import demo.Enclosingone.InsideOne2;

class Enclosingone

{

static final 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 static class InsideOne {//静态内部类

static{

System.out.println("Enclosingone.InsideOne.enclosing_method():静态内部类");

}

}

public class InsideOne2{//内部类

//静态内部类的加载不需要依附外部类,在使用时才加载。不过在加载静态内部类的过程中也会加载外部类

//非静态内部类不能使用静态代码块(一般的非静态类可以有静态代码块)

//因为非静态内部类相当于外部的非静态成员变量,如果外部类要调用非静态成员变量,则需要创建对象,

//进行调用;而非静态内部类中有static代码块,那么在外部类加载的时候就会加载,不需要考虑外部状态

//则与外部类的创建相驳论,所以静态内部类不能创建静态代码块

static final int a=200;//就近原则匹配a的值

//static final int a=6;

public InsideOne2() {

System.out.println(a);

}

}

@Override

protected void finalize() throws Throwable {

System.out.println("最后一次a:"+a);

}

}

class Enclosingonechild extends Enclosingone{

static {

System.out.println("Enclosingonechild.enclosing_method():子类静态代码块");

}

public Enclosingonechild() {

{

System.out.println("Enclosingonechild.Enclosingonechild():子类构造函数");

}

}

{

System.out.println("Enclosingonechild.enclosing_method():子类构造代码块");

}

}

public class demo

{

public static void main(String[] args)

{

new InsideOne();//静态内部类直接声明使用//相当于外部类

System.out.println("-------------");

new Enclosingone().new InsideOne2();

System.out.println("--------------");

new Enclosingonechild().name();

System.out.println("--------------");

System.gc();//调用gc回收,触发finalize方法;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值