JAVA中的抽象类与接口

接口和抽象类的区别:

接口和抽象类是支持抽象类定义的两种机制。

接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。

抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。

接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中的成员变量都是static final类型,由于抽象类可以包含部分方法的实现,所以,在一些场合下抽象类比接口更有优势。

相同点:
(1)都不能被实例化

(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点:

(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。

(3)接口强调特定功能的实现,而抽象类强调所属关系。

(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

JAVA中的抽象类与接口相关推荐

  1. Java 中的抽象类和接口

    Java 中的抽象类和接口 1.参考资料 深入理解Java的接口和抽象类 Java抽象类与接口的区别 2.前言 有一次旁听面试的时候,听到面试官问了一句:既然 JDK8 中接口有了默认方法实现,那接口 ...

  2. 深入理解Java中的抽象类和接口

    对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用, ...

  3. Java中的抽象类和接口(interface),abstract关键字的用法

    目录 抽象类 接口 抽象类 Java是一个面向对象的语言,因此类可以说是根基一般的存在,所有的方法/变量/语句都必须依附一个类才能存在,有时我们为了对一个类进行拓展,会选择继承这个类,在子类中对父类进 ...

  4. java中的抽象类和接口可以实例化吗?,它们可以有构造方法吗?(扩展:接口和抽象类的区别)

    结论1:不可以实例化: 解释: 我们这里讨论的实例化是 抽象类类名 抽象类对象名 = new 抽象类类名(参数可能有可能无) 这种形式. 抽象方法不能有方法体!你说它们实例化了有啥意义. 结论2:接口 ...

  5. 辨异 —— Java 中的抽象类和接口

    接口优于抽象类.-- <Effective Java>(Item 18) 0. 语法区别 抽象类允许给出某些方法的实现,接口不允许: 为了实现由抽象类定义的类型(type),类必须成为抽象 ...

  6. Java中的抽象类和接口

    目录 什么是抽象类 抽象类再实现多态中的意义 接口是什么 各位铁汁们大家好呀

  7. 让我们深度理解Java中的抽象类与接口

  8. java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...

    做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{ //动物的接口    public void eat(Food food); // ...

  9. java笔记之抽象类和接口

    前言 java笔记之抽象类和接口是开发人员的设计工具 正文 1.抽象类 客观存在的一类事物,当这类事物都是抽象的,无法具体的描述. 1)语法: 修饰符 abstract class 类名{ } 2)特 ...

最新文章

  1. ESX 3.5 与License Server不定时失去连接解决方法一例
  2. 946. 验证栈序列
  3. gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
  4. python的表达式范围怎么写_python表达式
  5. [dhtmlx]group task 失效问题解决
  6. 虚拟机linux下git clone 报SSL connect error错误
  7. 局域网内window10和Windows7共享只有USB接口打印机的方法——以sharp2048D为例子
  8. 【材料】ABS、ABS+PC、PA、PC、PMMA、POM、PP、PE、PPO、PVC、TPE和TPO材料优缺点
  9. python查看qq撤回消息_QQ坦白说里匿名叫我还想逃?Python轻松查看匿名用户信息...
  10. css中border属性设置
  11. C# 添加windows右键菜单
  12. 将pdf转成图片时,文字没法显示
  13. wifi信号正常,电脑插入网线之后,却显示“未识别网络”,
  14. 举头望明月打计算机术语,关于月亮的谜语
  15. 运动装备什么牌子好?运动装备品牌排行榜推荐
  16. Qt QAxObject操作excel文件过程总结
  17. uCLinux的编译
  18. poi 读取word 遍历表格和单元格中的图片
  19. 计算机管理用户和组无法访问,用户和组管理权限及文件访问控制
  20. python中plt.imshow()不显示图片

热门文章

  1. [转载]让matlab发出声音、播放音乐
  2. 分享功能(分享到新浪微博、腾讯微博、人人网、QQ空间。。。)
  3. 微型计算机原理及应用背景,微型机原理及应用
  4. 【研究生】论文该不该强制开放源代码?那个曾经硬刚LeCun的女学者这样说
  5. 富士施乐S2110显示J-4请更换感光鼓后无法进行HFSI计数器初始化的另类操作
  6. 中兴视觉大数据客户实践案例(部分)
  7. Windiws10系统不显示可用网络的处理方法!
  8. Python学习笔记_03
  9. OMNET++ INET框架学习教程(一)
  10. 是否每个大学生都有一段被学校强制实习,当作廉价劳动力的经历