Java--多态和异常

目录

多态

概念:

优点:

多态存在的三个必要条件:

向上转型(自动类型转换)

instanceof运算符

作用:

异常

概念

异常发生的原因

异常类型

异常层次

常见的内置异常类

 捕获异常(try-catch)

 结构:

finally关键字

 注意事项

抛出异常throws/throw

 异常的原则


多态

概念:

同一行为具有多个不同表现形式或形态的能力

同一个接口,使用不同的实例而执行不同的操作

同一个事件发生在不同的对象上产生不同的结果

优点:

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性

多态存在的三个必要条件:

  1. 继承
  2. 重写
  3. 父类引用指向子类对象

向上转型(自动类型转换)

<父类类型>  <引用变量名>  = new <子类类型>

父类的引用指向子类对象,自动进行类型补全。

小类型到大类型的转换

向下转型(强制类型转换)

<子类类型>  <引用变量名>  = (<子类类型>) <父类类型的引用变量名>

将一个指向子类对象的父类引用赋给一个子类引用

大类型到小类型的转换(存在风险,溢出)

instanceof运算符

作用:

用来对类型做判断的

注意:使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系

异常

概念

异常是阻止当前方法或作用域继续执行的问题

异常发生的原因

1.用户操作错误  2.程序错误  3.物理错误

异常类型

1.检查性异常    2.运行时异常     3.错误

异常层次

 Error:错误,用来指示运行时环境发生的错误

Exception:异常类,有两个主要的子类 

 输入输出异常(IOExxception)和运行时异常(RuntimeException)

常见的内置异常类

 捕获异常(try-catch)

public class TestTrycatch {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        try {
            //可能出现异常的代码
            System.out.println("请输入一个数字");
            int i = in.nextInt();
            System.out.println(i);
           //捕获住了异常
        }catch (InputMismatchException e){
            //打印堆栈信息
            e.printStackTrace();
        }catch (NullPointerException e1){
            //Exception 父类异常,可以直接捕获所有子类异常
            //多态--向上转型
        }catch (Exception e2){

        }finally {
            System.out.println("finally里的代码永远都会执行");
        }
    }
}

 结构:

try{

可能出现异常的代码 

}catch(异常类型    对象){

catch块

}finally{

无论是否发生异常,都会被执行。

}

多重捕获:一个try代码块后可以跟随多个catch代码块

finally关键字

无论是否发生异常,都会被执行。

 注意事项

  • catch不能独立于try存在
  • 在try-catch后面添加finally块并非强制性要求
  • try代码后不能既没有catch块,也没finally块
  • try-catch-finally块之间不能添加任何代码

抛出异常throws/throw

 异常的原则

  • 异常处理与性能
  • 异常只能用于非正常情况
  • 不要将过于庞大的代码块放在try中
  • 在catch中指定具体的异常类型
  • 需要对捕获的异常做处理
  • 35
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值