异常
- Throwable
- Exception
- CheckedException
- RuntimeException
- Error
- Exception
Checked Exception指在编译阶段Java编译器会检查CheckedException异常,并强制程序捕获和处理此类异常。
RuntimeException及其子类都是unchecked exception。
不可查异常
- ArithmeticException 算术异常
- ClassCastException类转换异常
- IllegalArgumentException非法参数异常
- IndexOutOfBoundsException索引越界异常
- NullPointerException空指针异常
抽象类
参考视频
抽象类是对事务的抽象,而接口是对行为的抽象。
- 抽象类中可以有构造方法,但只供子类调用。
- 抽象类中不一定有抽象方法。
- 抽象类中非抽象方法可以有函数体。
- 抽象方法可以被public, protected和private修饰。
接口
-
成员变量,格式:[public] [static] [final] 数据类型 常量名称 = 初始值;
- 常量必须进行赋值,一旦赋值不能被修改 。
- 常量名称完全大写,用下划线分割。
-
抽象方法,格式:[public] [abstract] 返回值类型 方法名称(参数列表);
-
默认方法(java 8),格式:[public] default 返回值类型 方法名称(参数列表){方法体}
- 也可以被覆盖重写
-
静态方法(java 8),格式: [public] static 返回值类型 方法名称(参数列表){方法体}
-
应该通过接口名称进行调用,不能通过实现类对象调用静态方法
-
MyInterfaceStatic.methodStatic();
public interface MyInterfaceStatic { static void methodStatic(){ System.out.println("这是接口的静态方法"); } }
-
-
私有方法(java 9), 格式:
- 普通私有方法:private 返回值类型 方法名称(参数列表){方法体}
- 静态私有方法:private static 返回值类型 方法名称(参数列表){方法体}
- private方法只有接口自己才能调用,不能被实现类或别人使用。
子父类加载顺序
- 父类静态属性和静态初始化块,按在代码中出现的顺序依次执行。
- 子类静态属性和静态初始化块,按在代码中出现的顺序依次执行。
- 父类的实例属性和实例初始化块,按在代码中出现的顺序依次执行。执行父类的构造方法。
- 子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。执行子类构造方法。
- 特殊情况:静态,final且值确定是常量,是编译时确定,不会加载类。
public final static int staticData = 4 + new Random().nextInt(10) ; //需要加载类
public final static int staticData = 4 ; //不需要加载类,直接去常量池取