Java接口和Java抽象类,java接口抽象
Java接口和Java抽象类,java接口抽象
Java接口和Java抽象类
关键字: java接口 java抽象类 默认适配模式
Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方才是它们的最佳位置呢?
(1)Java抽象类的优点:可以提供某些方法的部分实现,而Java接口却不可以。
(2)Java接口的优点:由于Java的单继承性,一个Java类只能实现一个Java抽象类,而却可以实现任意多个接口,因此Java接口是定义混合类型的理想工具。
(3)从设计理念层面看:Java抽象类在Java语言中体现了一种继承关系,即父类和派生类在概念本质上应该是相同的,而对于Java接口则不然,并不要求Java接口的实现者和接口定义在概念本质上是一致的,仅仅是实现了接口定义的契约而已。下面看一个很好的实例。
设计一个AlarmDoor,本质上是Door,同时它具有报警功能,我们应该如何来设计呢?
前面已经说过,抽象类在Java语言中表示一种继承关系,所以对于Door这个概念,应该使用抽象类实现。另外,AlarmDoor又具有报警功能,说明它又能完成报警概念中定义的行为,所以报警概念可以通过接口方式实现,代码如下:
Java代码
1. abstract class Door {
2. abstract void open();
3. abstract void close();
4. }
5.
6. interface Alarm {
7. void alarm();
8. }
9.
10.class AlarmDoor extends Door implements Alarm {
11. void open() {
12. //implement
13. }
14. void close() {
15. //implement
16. }
17. void alarm() {
18. //implement
19. }
20.}
abstract class Door {
abstract void open();
abstract void close();
}
interface Alarm {
void alarm();
}
class AlarmDoor extends Door implements Alarm {
void open() {
//implement
}
void close() {
//implement
}
void alarm() {
//implement
}
}
(4)结合Java抽象类和Java接口的优点,定义一个经典的设计模式:声明类型的工作仍然由Java接口承担,但同时给出一个Java抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类。也就是说在层次结构中,Java接口在最上面,然后紧跟着抽象类,这个模式就是“默认适配模式”。在Java语言API中使用了这种模式,而且全部遵循一定的命名规范:Abstract+接口名。
相关文章
- 暂无相关文章
用户点评