Day7 Javase抽象接口以及异常的捕获和抛出

Day7

面向对象编程

抽象

abstract修饰抽象类,如果修饰方法就是抽象方法。

抽象方法可以写方法体,然后让继承抽象类的类去重写抽象方法。

java的类是单继承的,但是接口可以实现多继承。

抽象类不能new,只能靠子类去实现他

抽象类也有构造方法。

接口

接口就是只有规范的即抽象方法,里面不能有实现的方法。

interface 定义的关键字

接口的本质是契约,制定好后都要遵守

接口里面的所有定义都是抽象的,public可以不用写。接口定义的属性都是常量。

类可以实现接口通过implement来,而且可以实现很多接口。侧边实现了多继承。

N种内部类

内部类就是在一个类的内部再定义一个类,通过外部类来实例化内部类

内部类能获得外部类的私有属性可以直接调用。

而静态内部类就是定义的时候加static后,就不能调用外部类私有的属性,因为是先加载的是内部类,而外部类还不存在。

一个java类中可以有多个class类但是只能有一个public class类。

class甚至可以在方法里设置为内部类 局部内部类

不用将实例保存在变量中,不需要名字可以直接用

new Student().getname();

异常分析

异常抛出也是了解较少的一部分,需要重新学习。

error和exception

异常就是可能会出问题,也可能没什么问题,处于不确定的状态。

就是在程序运行过程中所遇到的一些意外,就叫异常。

异常处理框架

java.lang.Throwable是所有异常的超类

在java Api里定义了许多异常类,分两大类。错误error和异常exception

图片

异常的抛出和捕获

异常处理的五个关键字

try catch finally throw throws

int a=1;
int b=0;
try {//监控区域
    System.out.println(a/b);
}catch (ArithmeticException e){//程序异常后执行下面代码块
    System.out.println("程序异常,b不能为0");
}finally {//用来处理善后工作
    System.out.println("finally");
}

finally可以不需要,但是是后面处理IO,资源的关闭操作。

可以捕获多个异常,就是可以多谢catch,但是范围要从小到大来写。

生产异常处理的快捷键 ctrl+alt+T

throw抛出异常 主动抛出异常一般在方法里使用。

throw new RuntimeException(e);

throws 则是主动在方法上抛出

public void test(int a,int b) throws RuntimeException{

}

而调用这个后,需要在使用前捕获这个异常。

自定义异常

用户自定义异常,只需要继承exception类

在程序中使用自定义异常,大体分为以下几个步骤

  1. 创建自定义异常类
  2. 在方法中使用throw关键字抛出异常
  3. 如果在当前抛出异常的方法中处理异常,可以使用try.......catch语句捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,进行下一步操作。
  4. 在出现异常方法的调用者中捕获并处理异常。

异常的打印信息 toString

最后尽量添加finally去处理资源的关闭,释放占用的内存。

思考

至此,javase算是学完,后面学反射和注解,线程,再接触框架。

今天学习面向对象的后面操作,抽象和接口,挺重要的,在做项目时。后端的实体定义均需要用到接口,这也体现了java面向对象的特性。

然后就是异常,很多可能出意外的代码都需要捕获和抛去以确保程序的稳定,而且也可以通过异常能很清楚的了解到是那部分的代码出问题,测试时很重要,当初用C++写时对这些关注很少,也只能算是入门。

posted @ 2022-09-21 20:57  青山隐隐丶  阅读(96)  评论(0编辑  收藏  举报