属性赋值位置执行的先后顺序: 默认初始化->显示初始化/在代码块赋值->构造器中初始化->有了对象后,调用对象的方法进行赋值。
接口中定义的方法皆是抽象方法,皆被public abstract修饰 接口中定义的常量皆被 public static final修饰,是全局常量
JAVA 8中关于接口的改进,Java 8中,可以为接口添加静态方法和默认方法。从技术角度来说,这是完全合法的,只是它看起来违反了接口作为一个抽象定义的理念。
静态方法:使用static关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。我们经常在相互一起使用的类中使用静态方法。可以在标准库中找到像Collection/Collections或者Path/Paths这样成对的类和接口。
默认方法:默认方法使用default关键字修饰。可以通过实现类对象来调用。我们在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性。比如:Java 8 中的Collection、List、Comparator等接口提供了丰富的默认方法。
如果子类(实现类)继承的父类和实现接口中声明了同名同参数的方法,那么子类在没有重写的情况下,默认调用父类的同名同参数方法。 ---- 类优先原则(针对方法而言)
如果子类(实现类)实现了多个接口,而这多个接口中定义了同名同参数的默认方法,则子类在没有重写的情况下,报错!(接口冲突)--->解决冲突,必须在实现类中重写此方法
如何在子类(实现类)中调用父类方法、接口中被重写的方法
父类 ---> super.Xxx() 接口 --->接口名.super.Xxx()
局部内部类 成员内部类
在局部内部类的方法中调用局部内部类所在类的声明的方法中的局部变量的话,要求此局部变量声明为final。
异常处理:抓抛模型
过程一:“抛”:程序在正常执行过程中,一旦出现异常,就会在异常代码出生成一个对应的异常类对象。并将此对象进行抛出。一旦抛出对象以后,以后的代码就不再执行。(关于异常对象:①系统自动生成的异常对象②自己手动生成的一个异常对象,并抛出(用关键字throw))
过程二:“抓”: 可以理解异常的处理方式。①try-catch-finally ②throws