Java编程那些事儿70——抽象类和接口(三)
陈跃峰
出自:http://blog.csdn.net/mailbomb
8.9.3 抽象类和接口的比较
抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是——“使用抽象类还是接口”?下面通过对于抽象类和接口进行简单的比较,熟悉两者之间的区别和联系,从而在实际设计时使用恰当的结构。
1.
什么时候使用抽象类或接口?
当设计中为了规范类中方法声明的结构(即类的行为)时,使用抽象类或接口。也就是强制子类对外部提供统一的方法声明时,使用抽象类或接口。
2.
抽象类和接口的区别(不同点)
a)抽象类是类,而接口是接口。
因为抽象类是一个类,所以类内部可以包含的内容(构造方法、方法和属性等)在抽象类内部都可以存在,当然抽象类也受到类的单重继承的限制。而接口是接口类型,所以接口内部只能包含常量属性和抽象方法,但是一个类可以实现多个接口,所以接口不受类的单重继承的限制。
b)抽象类内部可以包含实体方法,而接口不能
抽象类是一个类,所以在抽象类内部既可以包含抽象方法也可以包含实体方法,而接口内部的每个方法都必须是抽象方法。
c)抽象类可以继承类,而接口不能
抽象类是一个类,所以在设计时可以使抽象类继承其它的类,在已有类的基础上进行设计,但是接口不能继承类。
3.
抽象类和接口的联系(相同点)
a)抽象类和接口都可以声明对象,但是都只能使用子类的构造方法进行创建。
b)抽象类和接口内部都可以包含抽象方法。
按照Java语言的语法,子类在继承抽象类或实现接口时,都必须覆盖这些抽象方法,否则必须声明为抽象类。
c)抽象类和接口都可以代表一种类型,从而可以统一子类对象的类型,获得良好的可扩展性。
4.
什么时候使用抽象类?
当满足以下的条件时,最好使用抽象类进行设计:
a)子类不继承其它父类
b)子类中存在完全相同的功能实现的方法
c)子类中存在相同的属性
d)设计出的结构需要继承其它类
当需要满足d条件时,只能使用抽象类,否则也可以考虑使用接口实现。
5.
什么时候使用接口?
当满足以下的条件时,最好使用接口进行设计:
a)子类已经继承了其它父类
b)子类中不存在完全相同的功能实现方法
c)子类中不存在相同的属性
d)设计出的结构不需要继承其它类
当需要满足a条件时,只能使用接口,否则也可以考虑使用抽象类实现。
6.
抽象类和接口的其它用途
a)禁止创建该类的对象时,可以把该类声明为抽象类。
b)当需要存储大量的常量数据,而这些常量数据将会在项目中的多个类之间使用时,可以使用接口。
c)当需要统一具有某种功能的类的对象时,可以使用接口。例如Serializable接口。
当然,只有经过大量的系统设计训练以后,才可以更加深刻的理解抽象类和接口的区别和联系,从而更加自如的进行选择。
另外,需要说明的是,不是每个项目中都必须使用抽象类或接口的。
分享到:
相关推荐
理解类与对象的关系,掌握抽象类和接口的使用,是进阶Java开发者的必备技能。 异常处理是Java程序健壮性的关键。Java通过try-catch-finally语句块来捕获并处理运行时错误,保证了程序的正常执行。理解异常分类,如...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
Java中的类、抽象类和接口的区别和联系
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...
Java抽象类与接口实验报告
此书对于你学习Java抽象类和接口有非常大的帮助
Java中的抽象类(abstract class)和接口(interface)都是用于创建抽象化模型的重要工具,它们在面向对象编程中扮演着核心角色。这两种机制都允许我们定义一组方法的签名,但不提供具体实现,从而实现“设计契约”...
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...
在上面的练习中,我们使用抽象类和接口来实现多态性。在 LivingThing 抽象类中,我们定义了一个抽象方法 dance(String dancingStyle),然后在 Human 和 Monkey 中实现了该方法。在 PersonInterface 接口中,我们定义...
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被直接实例化,而是位于继承结构的顶层,被其他类实现或继承。接口和抽象类都可以包含抽象方法...
通过本实验,学生将掌握 Java 中的抽象类和接口的概念及其应用,并了解如何使用抽象类和接口来描述不同的业务逻辑。 四、实验讨论 在本实验中,我们使用抽象类和接口来描述不同的雇员类型,并演示了如何使用这些类...
在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统架构。本文将深入探讨Java抽象类与接口的区别...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们都用于实现多态性,但各自具有不同的特点和应用场景。了解并熟练掌握它们的区别对于编写高质量的Java代码至关重要。 首先,抽象类是一种不能被...
《Java编程那些事儿》是陈跃峰先生的一本关于Java编程技术的著作,虽然在网络上可能难以找到完整的电子版,但通过你提供的文件名列表,我们可以梳理出一系列关键知识点,这些都是学习Java编程过程中不可或缺的部分。...
这意味着抽象类和接口提供了不同的多态性形式。 - 当需要一组类共享相同的接口,但实现方式各不相同时,使用接口更合适。如果希望为类提供部分实现,并强制子类完成剩余部分,那么抽象类更有用。 6. **示例** 在 ...
Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也有明显的区别。本文将详细介绍Java中的基本类、抽象类以及接口的概念,并分析它们之间的区别和联系。 #### 二、基本类 **...