目录
多态
概念:
同一行为具有多个不同表现形式或形态的能力
同一个接口,使用不同的实例而执行不同的操作
同一个事件发生在不同的对象上产生不同的结果
优点:
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
多态存在的三个必要条件:
- 继承
- 重写
- 父类引用指向子类对象
向上转型(自动类型转换)
<父类类型> <引用变量名> = 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中指定具体的异常类型
- 需要对捕获的异常做处理