抽象类

  1. 抽象类的所有方法,继承了他的子类,都必须要实现他的方法
  2. 抽象类不能被new出来,只能靠它的子类去实现它,这是一个约束
  3. 抽象类中可以写普通的方法
  4. 抽象方法必须在抽象类中

接口

接口只有规范!自己无法写方法。

约束和实现分离:面向接口编程。接口就是规范,定义的是一组规则。

接口的本质是契约!

实现了接口的类必须要重写接口中的方法

接口中定义的都是常量,被默认用public static abstract修饰

接口的作用:

1. 约束
2. 定义一些方法。让不同的人实现
3. public abstract
4. public static abstract
5. 接口不能被实例化,接口中没有构造方法
6. implements可以实现多个接口
7. 必须要重写接口中的方法

异常

  • 异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。
  • 异常发生在程序运行期间,他影响了正常的程序执行流程。

正常工作时,需要掌握以下三种类型的异常、;

  1. 检查性异常
  2. 运行时异常
  3. 错误(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语句块去释放占用的资源