基础篇:
面向对象的特征:继承+多态,封装。
继承的特性:
子类拥有父类非private的属性,方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
java的继承是单继承,但是可以多重基础。单继承就是一个子类只能继承一个父类;多重继承就是,例如A继承B,B继承C。这是java继承区别于c++继承的一个特性。
提供了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
多态:
多态是方法的多态,不是属性的多态。
基于对象所属类的不同,外部对同一个方法的调用,实际执行行动逻辑不同。
多态一般和继承结合起来说,其本质是子类通过覆盖(overload)和重载(override)父类的方法,来使得对同一对象同一方法的调用产生不同的结果。
覆盖/重写(override):方法名,形参,返回结果,抛出异常相同,父子类之间。
重载(overload): 方法名相同,形参列表不同(参数个数,类型,顺序的不同),同一个类里面。
封装:
将数据以及加在这些数据上的操作组织在一起,成为独立意义的构件。
修改属性的可见性来限制对属性的访问。【一般使用private.(除非本属性确定会让子类继承)】
提供对外公共方法访问。【这些方法通常是public,从而提供对属性的读取操作】
一些只用于本类的辅助方法可以用private,希望其他类调用的方法用public。
java 中 final,finalize,finally的区别
final 关键字可以用于类,方法,变量前,用来表示被修饰的部分具有不可变的特性。
final 关键字用于类前:表示该类为最终类,不能被其他类继承。(因此一个类不能既被声明为abstract, 又被声明为final)
final 修饰方法:该方法为最终方法,可以被调用或重载,不能被覆盖/重写。
final 修饰变量/基本数据类型前:表明该变量是一个常量,在定义后该变量的值就不能被修改。
finalize 是个方法名,在Object类中定义,因此所有类都继承了它,用于回收资源。该方法由垃圾回收器在确定对象不可达清除对象之前调用。在实际应用中,不建议使用该方法回收任何短缺资源,因为很难知道这个方法什么时候被调用
finally 异常处理时提供finally块来执行任何清除操作。一般会用于关闭文件,终止部分操作,保证资源的合理回收。
Exception、Error、运行时异常与一般异常有何异同
Thrownable是所有java程序中错误处理的父类:
Thrownalbe 下有两种子类: Error错误 和 Exception异常。
Error: 表示由JVM所侦测到的无法预期的错误,属于JVM层次的严重错误,导致 JVM 无法继续执行。这是不可捕捉,无法采取任何恢复的操作,顶多只能显示错误信息。例如,java虚拟机运行错误(Virtual MachineError),JVM执行所需的内存资源不足(OutOfMemoryError),线程死锁,StackOverFlowError,AWTError,java虚拟机(JVM)一般会选择线程终止。
Error (VirtulMachineError[StackOverFlowError,OutOfMemoryError],AWTError)
Exception(异常): 是程序本身可以处理的异常。
Exception 可以分为编译异常(checked exceptions)和运行时异常(unchecked exceptions);
Exception下有两种子类:IOException和RuntimeException。
运行时异常都是RuntimeException类及其子类的异常,测试功能时程序终止,控制台出现的异常,比如:NullPointerException(空指针异常),ArrayIndexOutOfBoundsException(数组下标越界异常),MissingResourceException,ClassNotFoundException,IllegalArgumentException,UnkownTypeException
checked exceptions,编译异常/非运行时异常。是RuntimeException以外的异常,类型上都属于Exception类及其子类。通俗的说就是写代码时出现红线,需要try catch 或者 throws时出现的异常。如: IOException / SQLException / 自定义的Exception 异常。这些异常如果不处理,程序就是不能通过编译。
几个常见的RuntimeException:
NullPointerException 程序试图访问一个空的数组中的元素或访问空的对象中的方法或变量时引起的异常
OutOfMemoryException 用new语句创建对象时,系统无法为其分配内存空间则产生异常。
IndexOutOfBoundsException 由于数组下标越界或字符串访问越界引起的异常。
ClassNotFoundException 未找到指定名字的类或接口引起的异常。
NoSuchMethodException 所调用的方法未找到,引起异常。
IllegalAccessException 试图访问一个非public方法。
StringIndexOutOfBoundsException 访问字符串序号越界,引起异常。
ArrayIndexOutOfBoundsException 访问数组元素下标越界,引起异常。
FillNotFoundException 未找到指定文件引起的异常。
EOFException 未完成输入操作即遇文件结束引起的异常。
NumberFormatException 字符的UTF代码数据格式有错引起的异常。
IllegalThreadException 线程调用某个方法而所处状态不适当,引起异常。