`
jackey25
  • 浏览: 109093 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

接口与抽象类的异同(转)

阅读更多
        接口是一个只有方法名,没有方法体的东西,我写一个类去实现它又有什么用呢?我得到只是一些让我必须实现方法名,莫名其妙,难道要我自己去实现你说得所谓的“你提供的服务”?那样的话,我何必去实现你规定的接口?我自己写一个类不就得了么?

        我对抽象类倒是理解,你写了一个不完整的类,实现了一些通用的方法,我可以继承你,得到你的通用方法,然后再加一些自己需要的方法,或者覆盖你的不适应我的通用方法,挺好。

        这样理解了之后觉得,抽象类好像有点用处,而接口不但没有任何的用处,而且是一个垃圾,可是为什么设计者要出来这么个东西,还说他很重要呢?

        如果你是这么理解的,那就说明你在开发的时候,根本没有用到任何的设计模式,只是想实现什么功能就写一个类,如果这个类的一段代码在另一个类中的功能需要,你是把这段代码复制到了另外的类中。

我们慢慢说起,先说他们的共性和区别:

共性:接口和抽象类都不能直接通过new来创建新的事例,并且它们都是不完整的东西。重要的是他们在设计模式中都是处在最顶端的位置。

区别:抽象类可以提供某些方法的部分实现,接口不可以。
         抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
         再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。
          接口可以多继承,而抽象类只能单一的继承。

写到了这里,你就有可能明白了,下面只需要我点一下了,呵呵。

        有以上的共性和区别可以看出来,接口和抽象类不能单一的使用,他们有他们的特别之处----那就是他们都用在设计模式中。

他们各有自己的优点,只好是取长补短了。

你在你的设计模式中可以这样的应用:

首先把接口放在最上方,由他来做类型声明的工作,也就是我们所说的服务内容。
接着把抽象类放在其下,由他来实现这个接口的方法,来提供它的基本服务。

例如:使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。

剩下的类就有的选择了,呵呵,他们可以来实现这个接口,也可以继承这个抽象类。往往这些类通常是一些提供接口的具体服务的类,也是有着详细方法的类。它实现了接口的同时,又有着许多的同类方法供你选择。

Java语言用了这种模式,而且全都遵循一定的命名规范,这个模式就是“缺省适配模式”。
分享到:
评论

相关推荐

    简述抽象类和接口的区别-java接口和抽象类异同.docx

    简述抽象类和接口的区别-java接口和抽象类异同.docx

    java中接口与抽象类的详细分析与比较

    该资源对接口与抽象类作了详细分析与比较,相信你看了之后,会彻底的明白了,java学习更上一层楼

    2.接口与抽象类的介绍他们之间的异同点及接口是项目分层与618大促接口的实现.docx

    2.接口与抽象类的介绍他们之间的异同点及接口是项目分层与618大促接口的实现.docx

    抽象类和接口的异同.docx

    抽象类和接口的描述,包括抽象类的说明,接口的说明,抽象类和接口的异同

    介绍一下抽象类和接口的异同

    NULL 博文链接:https://tonysmith.iteye.com/blog/1436528

    解析在C#中接口和类的异同

    不同点: 不能直接实例化接口。 接口不包含方法的实现。 ...使用目的:若所有子类拥有共同的特性,可以把这个特性放到一个抽象类中,子类继承此抽象类。  特点:  1.不能被实例化;ClassName en=

    Java常见基础知识点.md

    * [面向对象和面向过程的... * [接口与抽象类的区别](#接口与抽象类的区别) * [Object类的方法有哪些?](#object类的方法有哪些) * [静态属性方法和成员属性方法区别](#静态属性方法和成员属性方法区别) * [子类属性

    11-JAVA-面向对象

    JAVA面向对象思维导图,便捷整理思路,包、类、Object、JAVA Bean的一般写法、接口、抽象类、接口与抽象类的异同点

    java面试宝典

    抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 ...

    计算机(专升本)Java程序设计复习资料.doc

    抽象类与接口的异同 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实 现,否则该类仍然需要被声明为抽象类。 ...

    广州-数数网笔试题

    抽象类和接口有什么异同?10分答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以...

    JAVA面试题收录

    接口和抽象类的异同点 重载(overload)和重写(overwrite)区别 StringBufferStringBuilderString区别 冒泡排序 选择排序 单例设计模式 常见的异常类型 Throws和Throw的区别 Final,Finally,finalize关键字的作用 ...

    2013年最全的JAVA面试题集,内部资料,绝对能帮助到你,不要后悔哦。

    抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?(等级1级) 18.2.Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类?是否可以 implements(实现)interface(接口)?(等级1...

    Java问题宝典2012版

    抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 16 21、写clone()方法时,通常都有一行代码,是什么? 16 22、面向对象的特征有哪些方面 17 23、...

    java 面试常问的问题 如何回答

    抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、...

    进销存系统文档作业例子

    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类...

    超级有影响力霸气的Java面试题大全文档

     接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类...

    JAVA面试题最全集

    81.UML中,类视图如何表示类中的继承与聚合? 82.客户端游标与服务器端游标的区别? 83.动态游标与静态游标的区别? 84.dotnet由哪几个基本框架组成? 85.Oracle中SGA是什么? 86.web servers是什么? 87.UNIX中QT是...

    java 面试题 总结

    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类...

    java面试宝典2012版.pdf

    抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 21、写clone()方法时,通常都有一行代码,是什么? 22、面向对象的特征有哪些方面 23、java中...

Global site tag (gtag.js) - Google Analytics