接口是一个只有方法名,没有方法体的东西,我写一个类去实现它又有什么用呢?我得到只是一些让我必须实现方法名,莫名其妙,难道要我自己去实现你说得所谓的“你提供的服务”?那样的话,我何必去实现你规定的接口?我自己写一个类不就得了么?
我对抽象类倒是理解,你写了一个不完整的类,实现了一些通用的方法,我可以继承你,得到你的通用方法,然后再加一些自己需要的方法,或者覆盖你的不适应我的通用方法,挺好。
这样理解了之后觉得,抽象类好像有点用处,而接口不但没有任何的用处,而且是一个垃圾,可是为什么设计者要出来这么个东西,还说他很重要呢?
如果你是这么理解的,那就说明你在开发的时候,根本没有用到任何的设计模式,只是想实现什么功能就写一个类,如果这个类的一段代码在另一个类中的功能需要,你是把这段代码复制到了另外的类中。
我们慢慢说起,先说他们的共性和区别:
共性:接口和抽象类都不能直接通过new来创建新的事例,并且它们都是不完整的东西。重要的是他们在设计模式中都是处在最顶端的位置。
区别:抽象类可以提供某些方法的部分实现,接口不可以。
抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。
接口可以多继承,而抽象类只能单一的继承。
写到了这里,你就有可能明白了,下面只需要我点一下了,呵呵。
有以上的共性和区别可以看出来,接口和抽象类不能单一的使用,他们有他们的特别之处----那就是他们都用在设计模式中。
他们各有自己的优点,只好是取长补短了。
你在你的设计模式中可以这样的应用:
首先把接口放在最上方,由他来做类型声明的工作,也就是我们所说的服务内容。
接着把抽象类放在其下,由他来实现这个接口的方法,来提供它的基本服务。
例如:使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。
剩下的类就有的选择了,呵呵,他们可以来实现这个接口,也可以继承这个抽象类。往往这些类通常是一些提供接口的具体服务的类,也是有着详细方法的类。它实现了接口的同时,又有着许多的同类方法供你选择。
Java语言用了这种模式,而且全都遵循一定的命名规范,这个模式就是“缺省适配模式”。
分享到:
相关推荐
在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键...通过阅读"java中接口与抽象类的详细分析与比较.doc"文档,你将获得更深入的洞察和实践指导,进一步提升你的Java编程能力。
### 抽象类与接口的区别 #### 一、定义与特性 **抽象类**: - 抽象类是一种特殊的类,它可以包含抽象方法(没有具体实现的方法)和具体方法(有具体实现的方法)。 - 抽象类不能被实例化,只能作为其他类的父类。 ...
Java语言的接口与抽象类是面向对象编程中的关键概念,它们在设计模式和代码组织中起着重要作用。这里我们将深入探讨这两个概念,并分析它们的异同。 首先,接口(Interface)是Java中的一种特殊类型,它通过使用`...
本文将深入探讨抽象类与接口的异同,并结合实际应用场景来帮助理解这两种机制。 首先,让我们从定义开始。抽象类是不能被实例化的类,它通常包含抽象方法,这些方法没有具体的实现,需要子类来完成。抽象类是为了...
本文将对 Java 编程语言中的接口和抽象类进行详细的介绍,讨论它们之间的异同点以及在项目分层和618大促接口实现中的应用。 一、包和访问权限 在 Java 中,包是组织类的基本单位,而访问权限则是控制类成员的可...
接着深入探讨了类与对象的基本用法,并详细讲解了接口和抽象类的作用,包括它们的异同点和组合使用方式。文章通过丰富的示例代码展示了如何在实际编程中利用接口和抽象类来实现多态和代码复用。 适合人群:初学者到...
下面将详细阐述抽象类与接口的定义、特点以及它们之间的异同。 首先,让我们了解抽象类。抽象类是一种特殊的类,它不能直接实例化,只能作为其他类的基类来使用。它的主要作用是提供一种通用的模板,定义一组共享的...
在.NET框架中,抽象类和接口都是用于实现多态性和代码重用的关键概念,它们各自具有独特的特性和用途。下面将详细阐述这两种概念的异同点。 首先,无论是抽象类还是接口,它们都无法直接被实例化,都需要通过继承来...
这篇文章将深入探讨Java接口与抽象类的异同,并通过实际例子来阐述它们在实际开发中的应用。 首先,接口是Java中一种完全抽象的类型,它只包含方法声明,不包含方法实现。这意味着任何实现接口的类都必须提供这些...
摘要:本文档介绍了抽象类和接口的概念、特点和使用方法,包括抽象类的定义、抽象方法、接口的声明和实现、抽象类和接口的异同点等。 一、抽象类 抽象类是一种特殊的类,它不能被实例化,需要被继承和实现。抽象类...
在“抽象类与接口”这个练习中,你将通过编写和调试代码,体验抽象类和接口在实际项目中的应用。通过对比分析,你会更清楚地了解它们的异同,提高代码设计能力。练习文件中的代码实例、注释和笔记将是你深入理解这些...
4. **比较与区别**:对比抽象类和接口的异同,比如抽象类可以有构造方法和非抽象方法,而接口不能;一个类只能继承一个抽象类,但可以实现多个接口。 5. **教学模式**:结合线上线下的混合式教学和问题导向学习...
Java语言中抽象类和接口的应用探究 Java语言中抽象类和接口是两种机制,都是支持抽象类的,但它们之间...在本文中,我们将对抽象类和接口进行比较和分析,总结它们的异同点,以便读者设计出更加高效、强大的Java程序。
Java 抽象类和接口定义与用法详解 Java 抽象类是一种特殊的类,它提供了一个模板,所有的子类都是在此模板的基础之上添加和修改完善功能而创建出来的。抽象类定义了抽象方法,即没有具体实现的方法,子类必须实现...
本文将深入探讨它们在继承、覆盖、多态和抽象类这几个关键概念上的异同。 首先,让我们从继承说起。继承是面向对象编程的核心特性,允许子类从父类中继承属性和方法。在Java中,类的继承使用关键字`extends`,而C#...
不同点: 不能直接实例化接口。 接口不包含方法的实现。 ...使用目的:若所有子类拥有共同的特性,可以把这个特性放到一个抽象类中,子类继承此抽象类。 特点: 1.不能被实例化;ClassName en=
**接口与抽象类的异同** 1. **相同点**: - 都包含抽象方法。 - 两者都不能实例化。 - 都用于定义对象的规范,即行为约定。 2. **不同点**: - 接口中的方法必须全是抽象的,而抽象类可以包含非抽象方法。 - ...
抽象类与接口的异同: 相同:都是抽象的、都不能被实例化、都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不提供具体的实现。 差异:接口是完全抽象概念设计,抽象类可以有非抽象方法,而接口是...
3. **接口与抽象类的区别**:比较两者的异同,理解接口更适合定义行为规范,而抽象类更适用于共享实现。 4. **多态性**:接口和抽象类都可以实现多态,理解它们在多态中的角色。 5. **接口的默认方法**:Java 8引入...