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类
在程序中使用自定义异常,大体分为以下几个步骤
- 创建自定义异常类
- 在方法中使用throw关键字抛出异常
- 如果在当前抛出异常的方法中处理异常,可以使用try.......catch语句捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,进行下一步操作。
- 在出现异常方法的调用者中捕获并处理异常。
异常的打印信息 toString
最后尽量添加finally去处理资源的关闭,释放占用的内存。
思考
至此,javase算是学完,后面学反射和注解,线程,再接触框架。
今天学习面向对象的后面操作,抽象和接口,挺重要的,在做项目时。后端的实体定义均需要用到接口,这也体现了java面向对象的特性。
然后就是异常,很多可能出意外的代码都需要捕获和抛去以确保程序的稳定,而且也可以通过异常能很清楚的了解到是那部分的代码出问题,测试时很重要,当初用C++写时对这些关注很少,也只能算是入门。