代码块
静态代码块:
由static修饰的代码块,随着类加载而执行,并且只执行一次。并且我们在jvm内存结构复习的过程中,我们都清晰的知道jvm的类加载过程。

我们很清晰的看到初始化的过程中,才会对静态代码块进行执行。而要达成初始化也有三种情况。

并且要留意的是,子类的初始化,必定会带动父类的初始化。
场景案例:
现在定义两个类,一个是Student类(父类),一个是Teacher类(子类)

代码块:
在创建对象过程后,类里面的代码块才会执行,所以代码块在每一个创建对象的时候都会执行一次。子类代码块的执行必定会带动父类的代码块执行。

内部类
内部类,指的是在一个类里面在创建一个类,此时整个被创建出来的类就是内部类。
注意:那我们该如何去使用到整个类咧,首先我们需要判断修饰符。
修饰符如果是public是可以被其他的类进行创建对象的。
但是如果是private,那么只能在当前的类里面创建对象使用。
public时:

private时:
就会报编译错误,此时就无法进行了,但是真的就无法进行了吗?还记得我们之前学过的反射。

静态内部类:
当前的内部类是由static去进行修饰的,所以不再需要创建两个对象。
成员内部类:
"成员"。也就是说在方法的外部。在类的内部,也就是上面图。
局部内部类:
也就是在方法的内部,或者在代码块的内部。

注意:局部内部类是不需要去范围的(public,private),因为他只会在方法内部生效,无法从方法内部调用出来。
局部内部类的方法是可以进行静态修饰以及范围修饰的:
public修饰的是指在方法内部公共使用
private也就是局部内部类私有,不被方法所调用
jdk1.8的不允许静态修饰,但是jdk其他版本暂时不知道。
匿名内部类:
"匿名"也就是没有名字,但是没有名字如何构成一个类咧,那就是通过父类或者接口的名字来充当自己的名字。
本质上是一个没有名字的子类对象、或者接口的实现类对象。

匿名内部类。

我们会发现我们无法进行调用匿名内部类里面的成员变量?
为什么咧?这里涉及到多态的逻辑。变量?无论是父类调用子类对象还是,接口调用实现类。
都遵循。两个原则:
成员变量,静态方法编译与运行也是看左边。
非静态方法。编译看左边,运行看右边。
所以!此时idea里面无法识别出我们自己定义的成员变量以及非静态的成员方法!