Java接口与抽象类的区别

来源:互联网 发布:张艺兴网络剧 编辑:程序博客网 时间:2024/06/15 22:26

Java将接口与概念提升为独立的结构,体现了接口与实现的分离。


Java接口允许多个类提供相同的功能,也允许一个类同时实现多个接口。


一、Java抽象类和接口

1、抽象类

抽象类是普通的类和接口之间的一种中庸之道。

抽象方法的声明:abstract void f();只有方法声明没有方法体。

包含抽象方法的类叫做抽象类,用关键字abstract表明。

抽象类中可以有零个或多个抽象方法,不允许创建抽象类的对象。

2、接口

接口使用关键字interface表明,使抽象的概念更加迈进了一步。

abstract关键字允许人们在类中创建一个或者多个没有任何定义的方法——提供接口部分,但是没有提供任何相应的具体实现,这些方法的实现是由此类的继承者创建的。

interface关键字产生一个完全抽象的类,没有提供任何具体的实现。它允许创建者确定方法名、参数列表和返回值类型,但是没有任何方法体。

接口只提供了形式,而未提供任何具体的实现。

要想创建一个接口,需要用interface关键字来替代class关键字,可以在interface关键字前添加public关键字,如果不添加public关键字,则该接口只具有包访问权限。

接口也可以包含域,但是这些域隐式的是static和final的。

可以在接口中显示的将方法声明为public的,但是即使不这么做,它们也是public的。因此当要实现一个接口时,在接口中被定义的方法必须被定义为是public的;否则,它们将只能得到默认的包访问权限,这样在方法被继承的过程中,其可访问权限就被降低了。