zoukankan      html  css  js  c++  java
  • 类的初始化与实例化顺序

    类初始化的条件

    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();
    
  • 相关阅读:
    Arcgis中修改字段名方法
    题事件名称为CLR20r3
    【转】CLR20R3 程序终止的几种解决方案
    Ajax+asp.net无刷新验证用户名
    [转载]C/C++编译器cl.exe的命令选项
    [网络整理]DEBUG命令使用解析五
    [网络整理]DEBUG命令使用解析一
    [网络整理]DEBUG命令使用解析六
    [易学C#]C#3.0语言新特性
    [易学C#]C#3.0语言新特性之Lambda表达式
  • 原文地址:https://www.cnblogs.com/loveer/p/11455313.html
Copyright © 2011-2022 走看看