抽象类
- 抽象类的所有方法,继承了他的子类,都必须要实现他的方法
- 抽象类不能被new出来,只能靠它的子类去实现它,这是一个约束
- 抽象类中可以写普通的方法
- 抽象方法必须在抽象类中
接口
接口只有规范!自己无法写方法。
约束和实现分离:面向接口编程。接口就是规范,定义的是一组规则。
接口的本质是契约!
实现了接口的类必须要重写接口中的方法
接口中定义的都是常量,被默认用public static abstract修饰
接口的作用:
1. 约束
2. 定义一些方法。让不同的人实现
3. public abstract
4. public static abstract
5. 接口不能被实例化,接口中没有构造方法
6. implements可以实现多个接口
7. 必须要重写接口中的方法
异常
- 异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。
- 异常发生在程序运行期间,他影响了正常的程序执行流程。
正常工作时,需要掌握以下三种类型的异常、;
- 检查性异常
- 运行时异常
- 错误(ERROR)
异常一般分为两大类:错误Error(很严重)和异常Exception
- 异常处理五个关键字:
try、catch、finally、throw、throws
throw可以主动的去抛出异常
public static void main(String[] args) {
int a = 1;
int b = 0;
try{//监控区域
new Test1().a();
}catch(Throwable e){//catch捕获异常,Throwable是最高级别的异常
System.out.println("程序出现异常,变量B不能为0");
}finally{//处理善后工作
System.out.println("finally最后出不出异常都会被执行");
}
}
public void a(){
b();
}
public void b(){
a();
}
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//快捷键Ctrl+Alt+T,自动
System.out.println(a/b);
} catch (Exception e) {
System.exit(0);
e.printStackTrace();//打印错误的栈信息
}
}
- 自定义异常
实际应用中情况总结:
1. 处理运行异常时,采用逻辑去合理规避同事辅助try-catch处理
2. 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3. 对于不确定的代码,也可以加上try-catch,处理潜在的异常
4. 尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
5. 具体如何处理异常,要根据不同的业务需求和异常类型去决定
6. 尽量添加finally语句块去释放占用的资源