定义抽象类的关键字是:abstract 。
abstract可以修饰类也可以修饰方法。
abstract修饰类,那么类就会变为抽象类。
public abstract class AbstractClass{ // 抽象类的定义 }
abstract修饰方法,那么方法就会变为抽象方法。
public abstract class AbstractClass{ public abstract void print(); // 抽象方法的定义 }
【注意事项】:
1、被abstract修饰的方法是抽象方法,抽象方法没有方法体。
2、一旦一个普通类中包含了抽象方法,那么这个普通的类必须设置成抽象类。
3、如果子类继承了抽象父类,有两种解决方案:
1)抽象子类,躺平,实现一部分/不实现父类中的抽象方法。
2)普通子类,还债,实现父类中所有的抽象方法。
4、抽象方法不能被实例化。
5、抽象类是有构造方法的,只不过不是为了自己使用,而是为了子类创建对象时使用。
6、抽象方法中可以定义成员变量、成员常量。
7、抽象类中的方法可以全部是普通方法/全不是抽象方法/普通方法和抽象方法共同存在抽象类中。
8、如果一个类不想被实例化。那么这个类可以被声明抽象类。
9、abstract不能和private、static、final共用。因为abstract抽象类中的抽象方法是必须要被继承后重写才能使用的,而private、static、final关键字都是使得子类不能够重写方法的关键字。
异常是由于我们的语法逻辑错误而导致了jvm无法为我们处理程序的逻辑错误,被迫终止程序的运行。为了提高代码的健壮性,我们需要去处理异常。
处理异常的方式有两种:捕获异常并解决和向上抛出。
捕获异常并解决的方式普通捕获异常:try-catch语句
语法格式:try{
可能产生异常的代码块;
} catch(异常的类型){
异常的解决方案;
}
public class TryCatch { public static void main(String[] args) { add(); } public static void add() { Scanner sc = new Scanner(System.in); try { // 捕获异常 System.out.println("请输入第一个整形数字:"); int oneNum = sc.nextInt(); System.out.println("请输入第二个整型数字:"); int twonum = sc.nextInt(); System.out.println(oneNum + " / " + twonum + " = " + (oneNum / twoNum)); } catch (ArithmeticException e) { // 处理异常 System.out.println("除数不能为零"); } catch (InputMismatchException e) { System.out.println("请输入整数"); } catch (Exception e){ System.out.println("产生了未知错误"); } } }
【注意事项】
- 如果产生了异常而没有catch语句块的解决方案与之对应,则会终止程序的运行,控制台会打印异常的信息。
- 一个try语句可以搭配多个catch语句。
- 一旦检测到代码产生了异常,尽管产生异常的代码下面还有其它正常的代码,下面那些正常的代码也不会运行,而是会直接去使用产生异常的类型去匹配catch语句中您所预料到的异常类型,匹配上了则会执行解决方案,没有匹配上则会终止代码的运行,控制台打印异常信息。
- 不推荐在catch语句中的第一行代码使用return语句,return语句会直接结束该程序的执行。
- 推荐使用Exception异常兜底,Exception异常必须写在最后,因为写在前面,其它的异常都不会被执行。异常也有子类关系,前面的异常必须是后面异常的子类或同级类。一旦前面的catch语句中的异常类型都没匹配上,那么会执行Exception异常中的解决方案。
所谓向上抛出,便是我们已经预先知道某个代码块可能会产生异常,但是我们不解决或者解决不了,那么便可以向上抛出,谁调用这个可能产生异常代码块的方法,那么谁去解决这个异常。
向上抛出的关键字:throws。
public class TryCatch { public static void main(String[] args) { add(); } public static void add() throws ArithmeticException, InputMismatchException, Exception { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个整形数字:"); int oneNum = sc.nextInt(); System.out.println("请输入第二个整型数字:"); int twonum = sc.nextInt(); System.out.println(oneNum + " / " + twonum + " = " + (oneNum / twoNum)); } }
【注意事项】
- 如果到了main方法调用这个可能产生异常代码块的方法,并且在main方法中没有捕获异常,那么jvm会因为无法处理这个异常而被迫终止程序,并且控制台打印异常信息。
- 推荐使用Exception异常兜底,Exception异常必须写在最后,因为写在前面,其它的异常都不会被执行。异常也有子类关系,前面的异常必须是后面异常的子类或同级类。一旦前面的catch语句中的异常类型都没匹配上,那么会执行Exception异常中的解决方案。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)