java 类初始化--ZT

1、类只有在使用New调用创建的时候才会被JAVA类装载器装入

2JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。

先初始化父类的静态代码--->初始化子类的静态代码-->

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

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

3、创建类实例时,首先按照父子继承关系进行初始化

4、类实例创建时候,首先初始化块部分先执行,然后是构造方法;然后从

本类继承的子类的初始化块执行,最后是子类的构造方法

5、类消除时候,首先消除子类部分,再消除父类部分

 

 

实例:

        abstract class base

        {
 
          public int age=getNumber(100); 
 
         static 
 
         { 
 
           System.out.println("base static block"); 
 
        } 
 
        { 
 
           System.out.println("base nonstatic block"); 
 
         } 
 
    static int sage=getNumber(50); 
 
    base() 
 
    { 
 
        System.out.println(age); 
 
        System.out.println("base start"); 
 
        draw();//会调用子类覆盖后的方法 
 
        System.out.println("base end"); 
 
         
 
    } 
 
    static int getNumber(int base) 
 
    { 
 
        System.out.println("base.getNumber int"+base); 
 
        return base; 
 
    } 
 
    public  void draw() 
 
    { 
 
        System.out.println("base.draw"); 
 
    } 
 
} 
 
public class initializeOrder extends base{ 
 
    public int age=getNumber(1001); 
 
    private int _radius=getNumber(10); 
 
    static int sage=getNumber(250); 
 
    static 
 
    { 
 
        System.out.println("subclass static block"); 
 
    } 
 
    { 
 
        System.out.println("subclass nonstatic block"); 
 
    } 
 
    initializeOrder(int radius) 
 
    { 
 
        _radius=radius; 
 
        System.out.println(age); 
 
        System.out.println("initializeOrder initialized"); 
 
    } 
 
    public void draw() 
 
    { 
 
        System.out.println("initializeOrder.draw "+_radius); 
 
    } 
 
    /** *//** 
 
     * @param args 
 
     */ 
 
    public static void main(String[] args) { 
 
        // TODO Auto-generated method stub 
 
        new initializeOrder(1000); 
 
    } 
 
}

 
  
运行结果:

C:\java>java    initializeOrder
base static block
base.getNumber int50
base.getNumber int250
subclass static block
base.getNumber int100
base nonstatic block
100
base start
initializeOrder.draw 0
base end
base.getNumber int1001
base.getNumber int10
subclass nonstatic block

1001
initializeOrder initialized
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值