初始化块
分为静态初始化块和非静态初始化块。
非静态初始化块:每次new对象都会执行。
静态初始化块:是使用static修饰,系统在类初始化阶段就会执行静态初始化块,因此静态初始化块总会比普通的初始化块先执行。
static
加载类的时候会优先加载static修饰的变量,static修饰的变量是一个全局共享的,声明在类里面,不能申明在方法里,所以声明必须在class类层面去声明,jvm为了节省内存,所以在内存中只有一次拷贝,只会加载一次,所以可以通过类名对static变量直接进行访问。
fun()方法中引用了静态变量a,由此说明:普通方法可以直接访问静态变量,因为普通方法属于类的实例,而实例可以访问类的所有成员,包括实例变量、实例方法以及静态变量和静态方法。
final
final可以修饰成员变量,也可以修饰局部变量和形参。
被其修饰的变量,一次赋值之后,不可以再次赋值。
被修其饰的方法,不允许被重写,如果不希望子类重写父类的某个方法,可以使用final修饰。
多态
向上转型,可以调用父类的对象但不能调用子类的对象。
向上转型,如果遇到父类的方法被子类重写了,那么就去调用子类也就是被重写后的方法。