美文网首页读书
【Java进阶营】java面试宝典1.1版

【Java进阶营】java面试宝典1.1版

作者: 管彤Java架构师 | 来源:发表于2022-04-27 19:34 被阅读0次

一、接口(interface)

1、 定义:接口不是类,而是一组对类需求的描述,这些类要遵从接口描述的统一格式进行定义。定义一个接口用关键字interface。

例:public interface a{……}

2、 接口是一种特殊的抽象类。在一个接口中,所有的方法为公开、抽象的方法,所有的属性都是公开、静态、常量。所以接口中的所有属性可省略修饰符:public static final,接口中所有的方法可省略修饰符:public abstract。

3、 一个类实现一个接口必须实现接口中所有的方法,否则其为一抽象类。并且在实现类中的方法要加上public(不能省略)。实现接口用关键字implements.

所谓实现一个接口就是实现接口中所有的方法。

例:class Aimple implements A{……..};

4、 一个类除了继承另一个类外(且只能继承一个类),还可以实现多个接口(接口之间用逗号分割)。这样可以实现变相的多继承。

例:class Aimple extends Arrylist implements A,B,C{…}

5、 不能用“new 接口名”来实例化一个接口,但可以声明一个接口。

6、 接口与接口之间可以多继承。

例:interface face1 extends face2,face3{}

7、 接口的作用

(1)、间接实现多继承。

用接口来实现多继承并不会增加类关系的复杂度。因为接口终归不是类,与类不在一个层次上,是在类的基础上进行再次抽象。

父类:主类型 接口:副类型

典例:相声届师父(主)和干爹(副)

(2)、允许我们为一个类定义出混合类型。

(3)、通过接口制定标准

接 口:标准的定义 定义标准

接口的调用者:标准的使用 使用标准

接口的实现类:标准的实现 实现标准

先有接口的定义,再有接口的使用者,最后把接口的实现者传到接口的使用者中,接口的使用者会通过接口来调用接口实现者的方法。这就是接口回调。

例:sun公司提供一套访问数据库的接口(标准),java程序员访问数据库时针对数据库接口编程。接口由各个数据库厂商负责实现。

(4)、解耦合作用:采用接口可以最大限度的做到弱耦合,将标准的实现者与标准的制定者隔离(例:我们通过JDBC接口来屏蔽底层数据库的差异)

8、 接口的编程设计原则

(1)、尽量针对接口编程(能用接口就尽量用接口)

(2)、接口隔离原则(用若干个小接口取代一个大接口)

这样可以只暴露想暴露的方法,实现一个更高层次的封装。

9、 注意点:

(1)、一个文件只能有一个public接口,且与文件名相同。

(2)、在一个文件中不能同时定义一个public接口和一个public类。

(3)、接口与类之间只有实现关系,没有继承关系;

类(抽象类)与类之间只有继承关系没有实现关系。接口与接口之间只有继承关系,且允许多继承。

(4)、接口中可以不写public,但在子类实现接口的过程中public不可省略。

二、接口 VS 抽象类

1、接口中不能有具体的实现,但抽象类可以。

2、一个类要实现一个接口必须实现其里面所有的方法,而抽象类不必。

3、通过接口可以实现多继承,而抽象类做不到。

4、接口不能有构造方法,而抽象类可以。

5、实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系。

三、Object类

1、 object类是类层次结构的根类,他是所有类默认的父类。

2、 object类中的三个方法。

(1)、finalize

当一个对象被垃圾收集的时候,最后会由JVM调用这个对象的finalize方法;

注意:这个方法一般不用,也不能将释放资源的代码放在这个方法里;

(2)、toString

返回一个对象的字符串表示形式。打印一个对象其实就是打印这个对象toString方法的返回值。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

我们可以在自己的类时覆盖toString方法,从而打印我们需要的数据。Public String toString{……}

(3)、equals(Object o)

该方法用来判断对象的值是否相等。但前提是类中覆盖了equals方法。Object类中的equals方法判断的其实还是地址。这里注意:String类已经覆盖了equals方法了,所以我们能使用equals来判断String对象的值是否相等。

下面是覆盖equals方法的标准流程:

public Boolean equals(Object o){

/*第一步:现判断两个对象地址是否相等/

if(this = = o) return true;

/*第二步:如果参数是null的话直接返回false;/

if(o = = null) return false;

/*第三步:如果两个对象不是同一个类型直接返回false/

if( !(o instanceof Student) ) return false;

/*第四步:将待比较对象强转成指定类型,然后自定义比较规则/

Student s = (Student)o;

If(s.name.equals(this.name)&&s.age==this.age)

return true;

else return false

}

(4)、equals的特性:自反性、对称性、一致性、传递性。

相关文章

网友评论

    本文标题:【Java进阶营】java面试宝典1.1版

    本文链接:https://www.haomeiwen.com/subject/ftkqyrtx.html