类的初始化与实例化顺序

类初始化的条件

  1. 一个类要创建实例,需要先加载进内存并初始化
  2. main方法所在的类,需要先加载进内存并初始化
  3. 静态内部类和非静态内部类一样,都是在被调用时才会被加载并初始化
  4. 加载静态内部类的时候,会先加载外部类,再加载静态内部类(但静态内部类的加载不需要依附外部类:Inner.INNER)

类初始化

类初始化就是执行<clinit>()方法:
    静态变量和静态代码块:按顺序从上到下执行,只执行一次

类实例化

实例初始化就是执行<init>()方法:
    1. 有几个构造器就有几个<init>()方法

    2. super();(父类实例化:第一)

    3. 非静态变量和非静态代码块:按顺序从上到下执行,只执行一次

    4. 构造器(最后)

不可被重写方法

1. final
2. 静态
3. private

外部类调用静态内部类中的属性和方法

1. 外部类可以通过创建" 静态内部类实例:Inner inner = new Inner() "的方法来调用静态内部类的非静态属性和方法

2. 外部类可以直接通过" Outer.Inner.属性/方法 "的方式直接调用静态内部类中的静态属性和方法

静态内部类调用外部类的属性和方法

静态内部类如果要访问外部的成员变量或者成员方法,那么必须是静态的

   1)静态内部类可以直接调用外部类的静态属性和方法

   2)静态内部类可以通过创建外部类实例的方法调用外部类的非静态属性和方法

创建静态内部类实例

创建静态内部类的时候是不需要将静态内部类的实例对象绑定到外部类的实例对象上

  静态内部类属于外部类,而不是属于外部类的实例化对象

   1)在非外部类中:Outer.Inner oi= new Outer.Inner();

   2)在外部类中:Inner inner = new Inner();

转载于:https://www.cnblogs.com/loveer/p/11455313.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值