抽象类和抽象方法:
抽象类不可实例化
抽象类的匿名子类:
接口
java中接口可以通过在new对象的时候,以匿名内部类(lambda表达式)的方式实现未实现的方法,从而来达到new对象的效果!
8.接口的具体使用,体现多态性 比如电脑的参数是Usb接口,需要传入实现Usb接口的Flush参数
体现了面向接口编程
9.接口,实际上可以看作一种规范
Java类可以实现多个接口
如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,子类再没有重写此方法情况下莫仍掉哦用父类中的同名同参数方法-----》类优先原则
如果实现类实现了多个接口,多个接口中定义了同名同参数的默认方法,再实现类没有重写的情况下,发生接口冲突 必须重写方法
如何再子类(或者实现类)调用父类或接口中的方法:
内部类
异常
error一般不编写针对性代码进行处理
红色:编译型异常 蓝色:运行时异常
异常处理方式:
方式一:try catch finally
方式二:throws
try-catch-finallly处理编译时异常,使得程序在编译得时候不再报错,但是运行时仍然可能报错。
相当于使用该结构将一个编译时可能出现得异常延迟到运行时候出现。
开发中如何选择使用哪一种异常:
常见的 Exception
https://mp.weixin.qq.com/s/VreiPFOeDuQvJJD4eeCWBw
下面我们回到 Exception 的探讨上来,现在你知道了 Exception 的父类是 Throwable,并且 Exception 有两种异常,一种是 RuntimeException
;一种是 CheckedException
,这两种异常都应该去捕获
。
下面列出了一些 Java 中常见的异常及其分类,这块面试官也可能让你举出几个常见的异常情况并将其分类
RuntimeException
UncheckedException
Error
其中包括两部分,由所有线程共享的数据区和线程隔离的数据区组成,在上面的 Java 内存模型中,只有程序计数器是不会发生 OutOfMemoryError
情况的区域,程序计数器控制着计算机指令的分支、循环、跳转、异常处理和线程恢复,并且程序计数器是每个线程私有的。
如果应用程序执行的是 Java 方法,那么这个计数器记录的就是虚拟机字节码
指令的地址;如果正在执行的是 Native
方法,这个计数器值则为空(Undefined)
。
除了程序计数器外,其他区域:方法区(Method Area)
、虚拟机栈(VM Stack)
、本地方法栈(Native Method Stack)
和 堆(Heap)
都是可能发生 OutOfMemoryError 的区域。
-
虚拟机栈:如果线程请求的栈深度大于虚拟机栈所允许的深度,将会出现
StackOverflowError
异常;如果虚拟机动态扩展无法申请到足够的内存,将出现OutOfMemoryError
。 -
本地方法栈和虚拟机栈一样
-
堆:Java 堆可以处于物理上不连续,逻辑上连续,就像我们的磁盘空间一样,如果堆中没有内存完成实例分配,并且堆无法扩展时,将会抛出 OutOfMemoryError。
-
方法区:方法区无法满足内存分配需求时,将抛出 OutOfMemoryError 异常。