小菜鸟javaOOP新学的知识点总结
上次说到继承,继承有单根性和传递性,单根性意味着一个子类只能有一个父类,但是一个父类可以有多个子类,传递性的意思是子类有可以有孙子类,而且孙子类可以继承父类和子类的一些属性和方法,这周我学到了一个新的知识点,接口。
接口是java提供的一种类型,接口本身不能有实例方法和构造函数,接口必须依靠子类来实现方法,接口可以说是一种特殊的抽象类,他解决了继承的单根性。
接口的特点:a. 接口不可以实例化对象,但是可以进行向上转型
b. 接口当中所有的属性都是静态常量,在定义的时候必须赋值。
c. 接口中所有的方法都是抽象方法,可以不加abstract修饰。
d. 接口当中属性和方法的权限只有public,其他权限都不允许。
e. 类实现接口以后,必须强制重写接口当中所有的抽象方法,除非这个类是抽象类。
f. 一个类只能继承自一个父类,但是可以同时实现多个接口
g. 接口之间可以继承,并且是多继承。
h. 接口中不可以定义任何构造函数
关键字:Interface 接口的声明
Implements:实现接口的关键字
一个子类可以继承父类,也可以链接接口,继承和接口各有特点,我总结了一下它们的异同点。
相同点:可以包含抽象方法
都不可以实例化
子类都必须重写继承的抽象类和接口的抽象方法,如果子类是抽象类,都可以不用重写继承的抽象类和接口的抽象方法
不同点:
1.子类只能继承一个抽象类 可以同时继承多个接口
2.抽象类里可以包含普通方法和抽象方法 普通属性和静态属性 接口里只能包含抽象方法和静态属性
3.抽象类允许使用各种权限 接口只能使用public
4.抽象类可以定义构造函数 而接口不允许定义构造函数
5.抽象类里面抽象方法必须用abstract修饰,而接口不用
在平时运行java代码经常会运行错误,这种情况称之为异常,代码一旦出错就会导致后面的代码执行不了,而异常处理机制可以避免一下必须执行的代码没有执行,也可以告诉我们哪个地方报错。
语法:
a. try{
}catch{
}
b. try{
}catch{
}finally{
}
c. try{
}finally{
}
ps:try不能独立存在
作用:发生异常时,会跳过异常代码,继续往下执行,不会中断
五大关键字:
a.try:存放可能发生异常的代码
b.catch:捕获异常,只有在发生异常的情况下才会运行
c:finally:无论如何都要执行的代码,除非java虚拟机推出
d:throws:声明异常
e:throw:手动抛出异常
常见的异常类型:
a. Exception:所有异常类型的父类 可以捕获所有异常
b. ArithmeticException:算术异常
c. ArrayIndexOutOfBoundsException:数组下标越界
d. NullPointerException:空指针异常 Pet pet=null;
e. ClassNotFoundException:加载异常 这个类找不到
f. IIIegalArgumentException:方法接受到非法参数
g. ClassCastException:类强制转换异常 企鹅-》狗
h. NumberFormatException:数据转换异常 String->int
异常处理机制的执行顺序:
1. try-catch-后续代码
a. 有异常 try–>catch–>后续代码
b. 无异常 try–>后续代
2. try-catch-finally-后续代码
a. 有异常 try–>catch–>finally–>后续代码
b. 无异常 try -->finally–>后续代码
异常中存在return时的执行顺序
1. try{return;}catch{}finally
2. try{ }catch{ return;}finally
ps:如果try或者catch中有return作为方法返回值,则方法的返回值会提前出结果,但是finally会继续执行
多重catch的注意事项
1. 捕获异常的顺序自上而下,某个异常执行完,其他异常会自动跳过
2. 异常类型的摆放顺序,必须是先子类后父类