java中的abstract和interface差异

这里需要谈到抽象类和Interface的差别,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力,两者的区别如下:

(1)相同点
A,两者都是抽象类,都不能实例化。
B,interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。

(2)不同点
A,interface实现,要用implements,而abstract class的实现,要用extends。
B,一个类可以实现多个interface,但一个类只能继承一个abstract class。
C,interface强调特定功能的实现,而abstract class强调所属关系。
D,尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),必须要实现。而abstract class的子类可以有选择地实现。
       抽象类的这个选择有两点含义:一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。

E,interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。

java中的abstract和interface差异相关推荐

  1. Java中抽象类 abstract和interface的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  2. java中的abstract_浅谈Java中的Abstract方法

    Abstract即抽象,是从众多的事物中抽取出共同的.本质性的特征,而舍弃其非本质的特征的过程.说到抽象,我们可能会想到许多抽象派的画家,比如说梵高,毕加索.有一说一,抽象这个词还真的是很抽象的,只可 ...

  3. [转载] Java中的abstract关键字

    参考链接: Java中的abstract关键字 在Java中,一说到"抽象",肯定会想到abstract关键字,今天就来讲一下这个关键字. (1).在class前面添加abstra ...

  4. 解析java中的abstract关键字

    解析java中的abstract关键字 1 含义 abstract:抽象的;是java中用来修饰类和方法一个关键字 2 为什么要用 2.1 当我们不想类能够实例化时(类实例化没有意义,例如Animal ...

  5. Java中的abstract方法和abstract类的问题

    当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义. 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法. 抽象类存在 ...

  6. Java中 关键字abstract(抽像)的定义

    一. abstract关键字 解释为抽象的,可以修饰:类,方法 1.1 abstract修饰类(抽象类) 一个被abstract修饰符修饰的类就是一个抽象类. public abstract clas ...

  7. Java中抽象(abstract)

    目录 1.抽象类概述 2.抽象类的注意事项 3.模板设计模式 4.final关键字 5.abstract final static 关键字对比 6.代码块 1.抽象类概述 抽象方法:         ...

  8. java中 wait()和sleep()的差异

    相同点:一旦执行该两种方法,当前的线程都会进入阻塞状态 不同点:(1)两个方法声明的位置不同,Thread类中生命sleep(),Object类中生命wait() (2)调用的要求不同:sleep() ...

  9. java中的abstract

    目录 1:abstract的作用 2:用法实例 1:abstract的作用 abstract用来修饰类和方法,表示抽象类和抽象方法,作用是将子类的公共属性和不能确认的方法提取到抽象类,确认的方法也可以 ...

最新文章

  1. Java项目:美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm)
  2. [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
  3. 1521 error1
  4. 【Excle数据透视表】如何创建非共享缓存的数据透视表
  5. JAVA大数--POJ 1715 大菲波数
  6. 【TensorFlow】——Windows10、pycharm、Python3.6.4中安装CPU和GPU两种版本的TensorFlow
  7. php中arraymultisort,php 数组函数array_multisort()用法
  8. 梯度下降优化算法总结
  9. 系统优化设计方案3.20周一例会
  10. zedgraph显示最小刻度_ZedGraph显示多条实时曲线
  11. 计算机程序员求职信英语作文,程序员英文求职信范文
  12. 我的世界风格字体 艺术字生成 Textcraft的介绍及使用
  13. 利用HttpWebRequest自动抓取51la统计数据
  14. seleniumwire获取百度指数
  15. 神经网络的权重初始化,神经网络的权值和阈值
  16. 2022年施工升降机司机(建筑特殊工种)考题及答案
  17. 简洁Python命名规范
  18. python勾股定理中三个数的关系是、找出三十以内的_从勾股定理到余弦相似度-程序员的数学基础...
  19. 【JS】两个等号和三个等号的区别
  20. php伪造来路301,使用 fsockopen 伪造来路

热门文章

  1. 事件控制块的原理与创建
  2. C++中类文件的分离
  3. mysql 2.71828_数学中的e=2.71828……到底是什么东西?
  4. mysql存储netcdf数据_关于NetCDF与HDF5存储科学数据的观点?
  5. python 栈道实现
  6. python发展前景怎么样-python发展前景怎么样
  7. 31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)
  8. 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践
  9. oracle v$access执行很慢,Oracle bug之v$access
  10. java 内存类_Java学习——类的生命周期和内存