[javascript学习指南]Java中抽象类与接口的区别

发布时间:2009-09-14   来源:javascript    点击:   
字号:

【www.quanqiunao.cn--javascript】

接口和抽象类有好多相同点和类似点,很多人有过这样的疑问:为什么有的地方必须使用接口而不是抽象类,而在另一些地方,又必须使用抽象类而不是接口呢?或者说,在考虑Java类的一般化问题时,很多人会在接口和抽象类之间犹豫不决,甚至随便选择一种。

理解抽象类

abstract class和interface在Java语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法, 请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?

抽象类:

抽象类是一种特殊的基类,里面除包含一些基本的属性和方法之外,还能包含一些只声明但没有实现的方法,用abstract去声明

例如:

接口:接口是一种更加抽象的类型,里面声明的方法全部公开给实现者去实现,并不关心具体细节 关键字是interface

例如:

综上所看 可以看出抽象类和接口的主要区别有:

1.抽象类可以有自己的方法,但接口的方法只有声明

2.抽象类的抽象方法使用abstract声明

其它需要注意的有:

1.一个类只能继承一个实现类,但是可以实现多个接口

2.当一个抽象类和一个接口有公共的属性时,如果一个类同时实现这个抽象类和接口 则编译不会通过。

接口
一种高度抽象的“抽象类”,使用interface关键字声明

下面定义一个Usb接口:

public interface Usb {

    public void start();

    public void end();

}

接口中没有构造方法

接口和抽象类一样,不能用于实例化

接口中不能定义变量,方法不准有方法体,方法默认为public,接口中方法和抽象方法不准有private修饰

只能继承接口,支持多继承(接口之间用逗号隔开)

类实现接口,使用关键字implements:
1.必须实现这个接口的所有方法,除非实现类是抽象类
2.一个类可以实现多个接口


本文来源:http://www.quanqiunao.cn/bianchengkaifa/14926/