=======================================================================
接口相当于就是对外的一种约定和标准,这里拿操作系统举例子,为什么会有操作系统?就会为了屏蔽软件的复杂性和硬件的简单性之间的差异,为软件提供统一的标准。
在Java语言中,接口是由interface关键字来表示的,比如我们可以向下面这样定义一个接口
public interface CxuanGoodJob {}
比如我们定义了一个CxuanGoodJob的接口,然后你就可以在其内部定义cxuan做的好的那些事情,比如cxuan 写的文章不错。
public interface CxuanGoodJob {
void writeWell();
}
这里隐含了一些接口的特征:
-
interface接口是一个完全抽象的类,他不会提供任何方法的实现,只是会进行方法的定义
-
接口中只能使用两种访问修饰符,一种是 public ,它对整个项目可见;一种是 default 缺省值,它只具有包访问权限
-
接口只提供方法的定义,接口没有实现,但是接口可以被其他类实现。也就是说,实现接口的类需要提供方法的实现,实现接口使用 implements 关键字来表示,一个接口可以有多个实现。
class CXuanWriteWell implements CxuanGoodJob{
@Override
public void writeWell() {
System. out.println("Cxuan write Java is vary well");
}
}
-
接口不能被实例化,所以接口中不能有任何构造方法,你定义构造方法编译会出错
-
接口的实现比如实现接口的全部方法,否则必须定义为 抽象类 ,这就是我们下面要说的内容
抽象类是一种抽象能力弱于接口的类,在Java 中,抽象类使用 abstract 关键字来表示。如果把接口形容为狗这个物种,那么抽象类可以说是毛发是白色、小体的品种,而实现类可以是具体的类,比如说是博美、泰迪等。你可以像下面这样定义抽象类
public interface Dog {
void FurColor();
}
abstract class WhiteDog implements Dog{
public void FurColor(){
System. out.println( "Fur is white");
}
abstract void SmallBody();
}
在抽象类中,具有如下特征
-
如果一个类中有抽象方法,那么这个类一定是抽象类,也就是说,使用关键字 abstract 修饰的方法一定是抽象方法,具有抽象方法的类一定是抽象类。实现类方法中只有方法具体的实现
-
抽象类中不一定只有抽象方法,抽象类中也可以有具体的方法,你可以自己去选择是否实现这些方法
-
抽象类中的约束不像接口那么严格,你可以在抽象类中定义构造方法、抽象方法、普通属性、方法、静态属性和静态方法
-
抽象类和接口一样不能被实例化,实例化只能实例化具体的类
===================================================================
异常是程序经常会出现的,发现错误的最佳时机是在编译阶段,也就是你试图在运行程序之前。但是,在编译期间并不能找到所有的错误,有一些NullPointerException和ClassNotFoundException异常在编译期找不到,这些异常是RuntimeException运行时异常,这些异常往往在运行时才能被发现。
我们写Java程序经常会出现两种问题,一种是java.lang.Exception ,一种是java.lang.Error,都用来表示出现了异常情况,下面就针对这两种概念进行理解。
Exception位于java.lang包下,它是一种顶级接口,继承于Throwable类,Exception类及其子类都是Throwable 的组成条件,是程序出现的合理情况。
在认识Exception之前,有必要先了解一下什么是Throwable 。
Throwable类是Java语言中所有 错误(errors) 和 异常(exceptions) 的父类。只有继承于
Throwable 的类或者其子类才能够被抛出,还有一种方式是带有Java中的 @throw 注解的类也可以抛出。
在Java规范中,对非受查异常和受查异常的定义是这样的:
The unchecked exception classes are the run-time exception classes and the error classes.
The checked exception classes are all exception classes other than the unchecked exceptionclasses.That is, the checked exception classes are Throwable and all its subclasses otherthan RuntimeException and its subclasses and Error and its subclasses.
也就是说,除了RuntimeException和其子类,以及error和其子类,其它的所有异常都是checkedException 。
那么,按照这种逻辑关系,我们可以对Throwable 及其子类进行归类分析
可以看到,Throwable位于异常和错误的最顶层,我们查看Throwable类中发现它的方法和属性有很多,我们只讨论其中几个比较常用的
//返回抛出异常的详细信息
public string getMessage();
public string getLocalizedMessage();
//返回异常发生时的简要描述
public public string toString();
//打印异常信息到标准输出流上
public void printStackTrace();
public void printStackTrace(PrintStream s);
public void printStackTrace(PrintWriter s);
//记录栈帧的的当前状态
public synchronized Throwable fillInStackTrace();
此外,因为Throwable 的父类也是0bject ,所以常用的方法还有继承其父类的getClass()和getName()方法。
下面我们回到Exception的探讨上来,现在你知道了Exception 的父类是Throwable,并且Exception有两种异常,一种是 RuntimeException ;一种是CheckedException ,这两种异常都应该去捕获。
下面列出了一些Java中常见的异常及其分类,这块面试官也可能让你举出几个常见的异常情况并将其分类
RuntimeException
UncheckedException
最后
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣,
最后
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
[外链图片转存中…(img-Rz5wxIPQ-1714375448389)]
[外链图片转存中…(img-8RhiCUwG-1714375448389)]
其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣,