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+接口名。
分享到:
相关推荐
在上面的练习中,我们使用抽象类和接口来实现多态性。在 LivingThing 抽象类中,我们定义了一个抽象方法 dance(String dancingStyle),然后在 Human 和 Monkey 中实现了该方法。在 PersonInterface 接口中,我们定义...
11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别....
Java中的类、抽象类和接口的区别和联系
10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和...
Java抽象类与接口实验报告
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
### Java利用接口和抽象类改写求圆的面积和梯形的面积 #### 深入理解Java的接口和抽象类 在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被...
4. 多继承:Java接口支持多继承,一个接口可以继承多个父接口,实现接口的组合和扩展。 5. 实现:实现接口的类必须实现接口中声明的所有方法,否则这个类也必须被声明为抽象类。 其次,抽象类(Abstract Class)是...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...
此书对于你学习Java抽象类和接口有非常大的帮助
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...
Java接口和抽象类是两种重要的面向对象编程概念,它们在软件设计中扮演着关键角色,主要用来实现多态性和代码的可扩展性。虽然两者都用于定义类的行为,但它们之间存在着显著的区别。 首先,接口是一种完全抽象的...
总的来说,抽象类和接口在Java中各有其独特的作用,正确选择和组合使用它们可以提高代码的灵活性、可扩展性和可维护性。在实际开发中,应根据问题领域的需求、设计意图和面向对象原则来做出决策。
"Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们都用于实现多态性,但各自具有不同的特点和应用场景。了解并熟练掌握它们的区别对于编写高质量的Java代码至关重要。 首先,抽象类是一种不能被...
本实验手册即根据需求模拟完成一个简易的疯狂动物城游戏系统, 平台的全称为:使用抽象类和接口实现疯狂动物城项目(后简称为: crazyZoo) 。该系统的主要功能包括:查看动物城成员、入驻动物城、修改动物信息、查找疯狂...