抽象类(abstract class)与接口(interface)的异同

转载 2017年08月12日 16:56:36

http://blog.csdn.net/aym_fuhong/article/details/52443151

抽象类:包含抽象方法的类就是抽象类
接口:指抽象方法的集合,方法不包含方法体

相同点:

  1. 都不能被实例化
  2. 接口的实现类或者抽象类的子类都必须实现了接口或抽象类中的方法后才可以被实例化

不同点:

  1. 接口只有定义,方法不能在接口中实现,实现接口的类要实现接口中所有的方法;抽象类可以有定义与实现,方法可以在抽象类中实现
  2. 接口要实现,抽象类要继承,一个类可以实现多个接口,但只能继承一个抽象类
  3. 接口强调设计理念为“has -a”的关系,抽象类强调“is -a”关系
  4. 接口中定义变量默认为public static final,且要赋初值,方法必须是public,static,且只能是这两个;抽象类中可以有自己的数据成员变量,也可以有非抽象的成员方法,而且成员变量默认为default。这些成员变量可以在子类中被重新定义,也可以重新赋值,抽象方法(有abstract修饰)不能用peivate,static,synchronized,native等访问修饰符修饰,同时方法以分号结尾,并且不带花括号
  5. 接口被运用于比较常用的功能,便于日后的维护或者添加删除方法;而抽象类更倾向于充当公共类的角色,不适用于对里面的代码进行修改

      接口是一种特殊形式的抽象类,使用接口完全有可能实现与抽象类相同的操作。当子类和父类之间存在有逻辑上的层次结构时,推荐使用抽象类;当用于不同类之间,定义不同类之间的通信规则,希望支持差别较大的两个或者更多对象之间的特定交互行为时,应该使用接口。
    此外,接口可以继承接口,抽象类可以实现接口,抽象类也可以继承具体类。抽象类也可以有静态的main方法。


抽象类(abstract class)与接口(interface)的异同

抽象类:包含抽象方法的类就是抽象类 接口:指抽象方法的集合,方法不包含方法体相同点: 都不能被实例化 接口的实现类或者抽象类的子类都必须实现了接口或抽象类中的方法后才可以被实例化 不同点: 接口只有...
  • aym_fuhong
  • aym_fuhong
  • 2016年09月05日 20:07
  • 1673

java接口(interface)与抽象类(abstract class)的区别

很久没有看到如此精辟的文章了!作者写得实在太好了!正在学JAVA或者想了解抽象类与接口的朋友,绝对不可错过!本人极力推荐! OOP中接口与抽象类的区别 Java语言接口与继承的本质 深入理解接口...
  • zgrjkflmkyc
  • zgrjkflmkyc
  • 2013年09月30日 21:08
  • 5847

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因...
  • aptentity
  • aptentity
  • 2017年04月01日 11:53
  • 1169

PHP中的 抽象类(abstract class)和 接口(interface)

一、 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。 ...
  • gsls181711
  • gsls181711
  • 2015年06月10日 20:39
  • 455

PHP中的 抽象类(abstract class)和 接口(interface)

PHP中的 抽象类(abstract class)和 接口(interface)
  • darlinghqq
  • darlinghqq
  • 2017年10月26日 18:52
  • 55

PHP中的 抽象类(abstract class)和 接口(interface)

一、 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。 ...
  • lovemyself196221
  • lovemyself196221
  • 2017年10月24日 09:57
  • 51

黑马程序员-抽象类abstract class 与 接口interface 的区别

l 从特性来看 1. 抽象类:含有抽象方法的类只能定义成抽象类。 抽象类不能被实例化,也即不能使用new关键字来实例化抽象类。 2. 接口:是一个完全抽象了的类,没有任何东西可以被子类来继承了。   ...
  • liuxiaohui_dh
  • liuxiaohui_dh
  • 2014年12月25日 13:55
  • 368

菜鸟的学习之路(5) —抽象类(abstract class)与接口(interface)

一.抽象类(abstract class):          1.使用abstract关键字修饰的类是抽象类,抽象类是无法被实例化的,也就是无法被new出抽象类的对象。             例:...
  • u010708662
  • u010708662
  • 2013年10月16日 21:02
  • 1008

Java中的抽象类和接口 (Abstract Class and Interface in Java)

转自:http://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定...
  • tjssehaige
  • tjssehaige
  • 2013年03月18日 21:34
  • 659

java 接口interface和抽象类abstract class 之间的区别

Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,他们的区别如下: 1 Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Ja...
  • rually
  • rually
  • 2014年12月13日 20:14
  • 594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:抽象类(abstract class)与接口(interface)的异同
举报原因:
原因补充:

(最多只允许输入30个字)