abstract 抽象
    1.被abstract修饰的方法是抽象方法,抽象方法没有方法体
    2.被abstract修饰的类是抽象类
    如果一个类中包含了抽象方法,那么这个类必须被声明成一个抽象类
    3.1变成抽象子类,躺平,实现一部分/不实现,继续抽象
    3.2.变成普通子类,”父债子偿”,子类需要实现抽象父类中的所有的抽象方法(即 重写)
    4.抽象类不可以实例化 即 不能创建对象
    注意:abstract 不可以和 private static final一起使用
    private: 被私有化后,子类无法重写,与abstract相违背
    static: 静态优先于对象存在,存在加载顺序问题
    final: 被final修饰后,无法重写,与abstract相违背

    1. /*
    2. 1.抽象类是否有构造方法? 有
    3. 2.既然抽象类不能实例化 为什么有构造方法?
    4. 不是为了自己使用 是为了子类创建对象时使用
    5. */
    1. /*
    2. 抽象类中可以定义成员变量吗? -- 可以
    3. 抽象类中可以定义成员常量吗? -- 可以
    4. 抽象类中可以定义普通方法吗? -- 可以
    5. 抽象类中可以定义抽象方法吗? -- 可以
    6. 抽象类中可以全是普通方法吗? -- 可以
    7. 如果一个类中都是普通方法,为什么还要被修饰成抽象类呢?
    8. because,抽象类不可以被实例化,so如果不想让外界创建本类的对象,就可以把普通类声明成抽象类
    9. 抽象类中可以全是抽象方法吗? -- 可以
    10. */

    面向对象 - 异常

    异常的继承结构
    异常层次结构中的根是Throwable 异常的顶级父类

    Error:目前我们编码解决不了的问题
    编译异常:为运行代码就报错了,强制要求处理

    Exception:异常
    运行时异常:运行时代码才报错,可以通过编译,不强制要求处理

    报错ArithmeticException—算数异常
    报错InputMismatchException—输入不匹配异常

    学会看报错信息提示,找到错误方向
    看报错的行号提示,确定报错位置,哪里不对点哪里

    解决方案
    1.捕获处理 - 自己解决
    2.向上抛出 - 别人解决 ↓
    异常捕获处理格式:

    1. //try-catch 可以嵌套,如果有多种异常类型需要特殊处理的情况
    2. try{
    3. 可能会抛出异常的代码
    4. }catch(预先设想的异常类型 异常名){
    5. 万一捕获到了异常,进行处理的解决方案
    6. }
    1. 例:
    2. try{
    3. System.out.println("请输入要计算的第1个整数");
    4. int a = new Scanner(System.in).nextInt();
    5. System.out.println("请输入要计算的第1个整数");
    6. int b = new Scanner(System.in).nextInt();
    7. System.out.println(a/b);
    8. }catch (Exception e){
    9. System.out.println("您输入的数据不对");
    10. }
    11. //使用多态的思想,无论是什么异常,都可以统一看做父类型Exception

    2.向上抛出
    在方法的小括号和大括号之间,写throws 异常类型
    如果有多个异常,使用逗号隔开即可

    1. //如果一个方法抛出了异常,那么谁来调用这个方法,谁就需要处理这个异常
    2. //这里的处理有两种方法: 捕获异常 或 向上抛出
    3. //注意:我们一般会在main()函数调用之前将异常解决掉
    4. public static void main(String[] args) {
    5. f();
    6. }
    7. private static void f(){
    8. try {
    9. method3();
    10. } catch (Exception e) {
    11. System.out.println("输入数据不对");
    12. }
    13. } //向上抛出
    14. private static void method3() throws Exception{
    15. System.out.println("请输入要计算的第1个整数");
    16. int a = new Scanner(System.in).nextInt();
    17. System.out.println("请输入要计算的第1个整数");
    18. int b = new Scanner(System.in).nextInt();
    19. System.out.println(a/b);
    20. }