带有继承和静态的类的初始化以及加载过程(重要)

这篇博客探讨了Java中带有继承和静态属性的类如何进行初始化和加载。通过BaseClass及其子类TestClassInit的例子,展示了构造器的执行、静态变量初始化的过程,以及成员变量的默认值和赋值操作。
摘要由CSDN通过智能技术生成

package com.google.test;

public class BaseClass {
public void haha(){
printInit(“haha”);
}
private int i = 9;
protected int j;
public BaseClass() {
// TODO Auto-generated constructor stub
System.out.println(“i=” + i + “,” + “j=” + j);
j = 39;
}
private static int x1 = printInit(“1”);

static int printInit(String s) {
    // TODO Auto-generated method stub
    System.out.println(s);
    return 47;
}

void testBaseNormalMethod() {
    System.out.println("BaseNormalMethod()");
}

}

package com.google.test;

public class TestClassInit extends BaseClass{

/**
     父类代码注释
  public class BaseClass {
    public void haha(){
        printInit("haha");
    }
    private int i = 9;
    protected int j;
    public BaseClass() {
        // TODO Auto-generated constructor stub
        System.out.println("i=" + i + "," + "j=" + j);
        j = 39;
    }
    private static int x1 = printInit("1");

    static int printInit(String s) {
        // TODO Auto-generated method stub
        System.out.println(s);
        return 47;
    }

    void testBaseNormalMethod() {
        System.out.println("BaseNormalMethod()");
    }

}*/
private void testNomalMethod1(){
    System.out.println("NomalMethod1()");
}
private int k = printInit("3");
public TestClassInit(){
    System.out.println("k=" + k);
    System.out.println("j=" + j);

}
private int k2 = printInit("4");
private void testNomalMethod2(){
    System.out.println("NomalMethod2()");
}
public static void main(String[] args) {
    System.out.println("2");
    TestClassInit testClassInit = new TestClassInit();
}

private static int x2 = printInit("test");

/**
 * 步骤如下:
 * 1.先编译子类.class加载,看到extents后加载父类,先找静态的方法得出结果:1(这一步不管子类有没有创建子类对象都要执行)
 * 2.父类执行完以后执行子类的静态方法
 *  (1.普通静态方法优先于main方法执行,虽然main方法也是静态的,2.同样这一步不管子类有没有创建子类对象都要执行)得出结果:test ,2
 * 3.创建子类对象时候调用子类构造方法,子类构造方法默认有一条super()来调用父类构造方法,这时候不会调用父类构造方法之前的普通方法。
 *  得出结果:i=9,j=0。注意:基本类型boolean默认值为false,char默认值为:\u0000,其他全部为0,引用类型默认值为null。
 * 4.执行子类从父类继承下来的静态方法,然后执行自身的构造方法,得出结果:3,(k=47);4(k2=47)
 * 5.执行自身的构造方法。得出结果:k=47,j=39

 */

/**运行结果:
 *  1
    test
    2
    i=9,j=0
    3
    4
    k=47
    j=39*/

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值