首先我们要明白java中的内部类是什么呢?有什么好处呢?为什么要用到内部类呢?下面这两个博客介绍都挺好的
https://blog.csdn.net/gaoyong_stone/article/details/79556287
https://www.cnblogs.com/hypnotizer/p/5858439.html
接下来,可以参考下我写的测试demo
public class StaticTest {
public static void main(String[] args){
new Dog();
}
}
class Animal{
static{
System.out.print("a");
}
public Animal(){
System.out.print("b");
}
}
class Dog extends Animal{
Cat cat = new Cat();
public Dog(){
System.out.print("c");
}
static{
System.out.print("f");
}
}
class Cat extends Animal{
public Cat(){
System.out.print("d");
}
static{
System.out.print("e");
}
}
来解释一下为什么打印的结果是这样子呢?
1、在new B一个实例时首先要进行类的装载。(类只有在使用New调用创建的时候才会被java类装载器装入)
2、在装载类时,先装载父类A,再装载子类B
3、装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)
4、装载子类B后,完成静态动作
类装载完成,开始进行实例化
1、在实例化子类B时,先要实例化父类A
2、实例化父类A时,先成员实例化(非静态代码)
3、父类A的构造方法
4、子类B的成员实例化(非静态代码)
5、子类B的构造方法