Day_11 异常与抽象
一.异常
1.定义:用来封装错误信息的对象,由类型,提示以及行号组成。
2.异常的继承结构
Throwable-顶级父类
—Error-系统错误,无法修复
—Exception-可修复的错误
—Run TimeException
—ClassCastException
—ClassNotFundException
3.异常处理:当程序中遇到了异常,通常有两种处理方式。捕获与向上抛出。当调用了一个抛出异常的方法时,调用位置可以不做处理继续向上抛出也可以捕获异常。
<1>捕获方式:
Try{
需要捕获的代码
}catch(异常类型 异常名){
处理方案
}
<2>抛出方式:在发生异常的方法上加代码:throws。
例如:public static void main(String[] args) throws Exception{
二.测试异常
//接收键盘输入的两个数字并做除法运算。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
try {
//捕获异常:把可能发生异常的代码放在try里。
//当异常发生时会被catch住并执行catch中执行异常处理的代码。
System.out.print("请输入一个数a:");
int a = new Scanner(System.in).nextInt();
System.out.print("请输入一个数b:");
int b = new Scanner(System.in).nextInt();
System.out.println(a/b);
}catch(Exception e) {
//提出解决方案
System.out.println("您输入的两次整数有误!");
}
}
}
三.抽象类
1.定义:Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。抽象类可以理解为是一个只有方法声明而没有方法体的特殊类。
2.格式:修饰符 abstract 返回值 方法名(参数列表)
3.特点:
<1>通过Java关键字abstract实现。
<2>可以修饰方法或者类。
<3>抽象类中可以没有抽象方法(由子类去实现)。
<4>如果类中有抽象方法,那么该类必须定义为一个抽象类。
<5>子类继承的抽象类后,要么还是一个抽象类,要么就把所有的抽象方法都重写。
<6>多用于多态中。
<7>抽象类不可以被实例化。
四.抽象类的构造函数
public class Abstract_Construct {
public static void main(String[] args) {
Son s = new Son();
//Animal2 a = new Animal2();//抽象类无法实例化。
//Animal2 a = new Son();//抽象类多用于多态。
}
}
abstract class Animal2{
//抽象类可以有构造方法,但是无法实例化。
public Animal2() {
System.out.println("构造方法1");
}
}
class Son extends Animal2{
public Son() {
System.out.println("构造方法2");
}
}
五.抽象类的成员方法
public class Abstract_Construct {
public static void main(String[] args) {
Son s = new Son();
//Animal2 a = new Animal2();//抽象类无法实例化。
//Animal2 a = new Son();//抽象类多用于多态。
}
}
abstract class Animal2{
//抽象类可以有构造方法,但是无法实例化。
public Animal2() {
System.out.println("构造方法1");
}
}
class Son extends Animal2{
public Son() {
System.out.println("构造方法2");
}
}