-
对象属性初始化顺序
- 默认初始化
- 显示初始化/代码块中赋值
- 构造器中初始化
- 通过对象.属性初始化
-
final修饰的属性初始化位置
- 显示初始化
- 代码块中初始化
- 构造器中初始化
-
static final修饰属性:全局常量
-
抽象类中有构造器,便于子类实例化的全过程
-
接口中不能定义构造器,接口不能实例化
-
//假设Student是抽象类 那么非匿名类的匿名对象为 Student s = new Student() { //重写方法 } -
接口
- JDK7:public static final全局常量、public abstract抽象方法,这些关键字都可以省略
- JDK8:JDK7 + 静态方法、默认方法default
-
接口中定义的静态方法只能通过接口调用,默认方法可以正常调用
-
class A extends B implements C
-
如果子类继承的父类和实现的接口中存在同名同参数的方法,那么在子类没有重写此方法的情况下,调用的是父类中的方法,体现了类优先原则
-
super.方法:调用的是父类声明的
-
super.接口.方法:调用的是接口中声明的
-
外部类P 内部类调用P的方法相当于 P.this.方法 假设内部类是静态 则 P.Q q = new P.Q() 假设内部类是非静态 则 P p = new p() P.Q q = p.new Q()
-
在局部内部类的方法中,如果调用外部方法中的局部变量的话,此局部变量必须被final修饰。JDK7之前必须为final,JDK8之后不修饰则默认final



