Java中的接口(interface)和抽象类(abstract class)

来源:互联网 发布:批量登录软件制作 编辑:程序博客网 时间:2024/06/05 17:42

1. 接口(interface),接口被用来建立类与类之间关联的标准.一般认为,接口的主要作用是弥补Java在多继承上的缺陷。概括来说,行为规范用接口。有人还认为,接口是抽象的抽象类

2. 抽象类(abstract class),只要类中有一个抽象方法,此类就被标记为抽象类。概括的说,通用功能用抽象实际上抽象类除了被继承之外没有任何意义。抽象类用来做模板的设计,用来对事物进行高度概括。

两者的目的是不一样的,接口用来定义某一事物的行为规范,一般被用来作为某一函数参数的输入类型或输出类型。而抽象类是用来提高代码间的复用性的。所以用接口来编程一般的套路如下:
1.定义接口
2.定义一个实现了该接口的抽象类,把通用方法、辅助方法都在抽象类中实现,把变化的部分作为抽象函数留给子类去实现
3.子类继承抽象类,实现抽象方法,从而实现接口。一般不提倡一个类不继承任何抽象类而直接实现一接口


区别:

1.抽象类用来继承,接口用来实现。Java支持多实现,但不支持多继承。

2.抽象类中可以有私有变量和方法,接口中所有变量和方法都是public的。

3.抽象类表示的是"is-a"关系,接口表示的是"like-a"关系。

4.抽象类至少有一个抽象方法,可以有具体方法,接口中所有方法都是抽象的(public abstract类型)。

5.抽象类中变量可以修改(friendly类型),接口中变量都是public static final类型的,必须给初值并且不能被修改(一般不在接口中定义变量)。

6.继承抽象类必须重写所有抽象方法,普通方法可以重写也可以不重写,实现接口必须实现所有方法。

最后:其实接口是抽象类的延伸,可以将它看做是纯粹的抽象类,就是说接口比抽象类还抽象,还有设计接口的目的就是为了实现C++中的多重继承,不过java团队设计的一样更有趣的东西来实现这个功能,那就是内部类(inner class)。


原创粉丝点击