一、普通类、抽象类和接口区别:

1. 普通类可以实例化,接口都不能被实例化(它没有构造方法),抽象类如果要实例化,抽象类必须指向实现所有抽象方法的子类对象(抽象类可以直接实例化,直接重写自己的抽象方法),接口必须指向实现所有所有接口方法的类对象。

2. 抽象类要被子类继承,接口要被子类实现。

3. 接口只能做方法的声明,抽象类可以做方法的声明,也可以做方法的实现。

4. 接口里定义的变量只能是公共的静态常量,抽象类中定义的变量是普通变量。

5. 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如果不能全部实现接口方法,那么该类只能是抽象类。

6. 抽象方法只能声明,不能实现。接口是设计的结果,抽象类是重构的结果。

7. 抽象类里可以没有抽象方法。

8. 如果一个类里有抽象方法,那么该类只能是抽象类。

9. 抽象方法要被实现,所以不能是静态的,也不能是私有的。

10. 接口可以继承接口,并可多继承接口,但类只能单继承。(重要啊)

11. 接口中的常量:有固定的修饰符-public static final(不能用private和protected修饰/本质上都是static的而且是final类型的,不管加不加static修饰)。

12. 接口中的抽象方法:有固定的修饰符-public abstract 。

13、接口细节:

若接口中方法或变量没有写public,static,final / public,abstract ,会自动补齐 。

接口中的成员都是共有的。

接口与接口之间是继承关系,而且可以多继承。

接口不能被实例化

一个类可以实现多个接口

在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用,访问形式:接口名.变量名。

一个接口不能继承其它的类,但是可以继承别的接口

一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现

注意:

① 抽象类和接口都是用来抽象具体的对象的,但是接口的抽象级别更高。

② 抽象类可以有具体的方法和属性,接口只能有抽象方法和静态常量。

③ 抽象类主要用来抽象级别,接口主要用来抽象功能。

④ 抽象类中,且不包含任何的实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

⑤ 接口方法,访问权限必须是公共的 public。

⑥ 接口内只能有公共方法,不能存在成员变量。

⑦ 接口内只能包含未被实现的方法,也叫抽象方法,但是不能用 abstract 关键字。

⑧ 抽象类的访问速度比接口要快,接口是稍微有点慢,因为它需要时间去寻找在类中实现的方法。

⑨ 抽象类,除了不能被实例化外,与普通 java 类没有任何区别。

⑩ 抽象类可以有 main 方法,接口没有 main 方法。

⑪ 抽象类可以用构造器,接口没有。

⑫ 抽象方法可以有 public、protected 和 default 这些修饰符,接口只能使用默认 public。

⑬ 抽象类,添加新方法可以提供默认的实现,不需要改变原有代码。接口添加新方法,子类必须实现。

⑭ 抽象类的子类用 extends 关键字继承,接口用 implements 来实现。

二、什么时候用抽象类和接口

1. 若果你拥有一些方法并且想让他们中的一些有默认实现,那就用抽象类。

2. 如果你想实现多重继承,那么必须使用接口。由于 java 不支持多继承,子类不能继承多个父类,但是可以实现多个接口,因此你可以使用接口来实现它。

3. 如果基本基本功能在不断变化,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么所有实现类都需要改变。

普通类,抽象类和接口之间的区别相关推荐

  1. Java中类、抽象类、接口之间的区别和联系。

    Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...

  2. Java中抽象类和接口之间的区别

    一些受欢迎的访谈问题是"抽象类和接口之间有什么区别","什么时候使用抽象类以及什么时候使用接口". 因此,在本文中,我们将讨论这个主题. 在探讨它们之间的差异之 ...

  3. 类、抽象类、接口之间的区别

    目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...

  4. C#.NET里面抽象类和接口有什么区别

    1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象 ...

  5. 抽象类和接口有什么区别

    原文链接: javacodegeeks 转自:对抽象类与接口的一点思考 - Sharehub 很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题. ...

  6. php 抽象类 接口 区别,PHP中抽象类和接口有什么区别

    PHP中抽象类和接口有什么区别 发布时间:2021-02-18 15:02:14 来源:亿速云 阅读:70 作者:Leah 这篇文章将为大家详细讲解有关PHP中抽象类和接口有什么区别,文章内容质量较高 ...

  7. lcd屏幕有mipi接口吗_LCD屏幕MIPI接口和LVDS接口之间的区别(摘要)

    LCD屏幕接口类型包括LVDS接口,MIPI DSIDSI接口(以下仅讨论LCD屏幕LVDS接口显示屏的mipi接口定义显示屏的mipi接口定义,而没有讨论其他应用程序的LVDS接口,因此当涉及LVD ...

  8. java 抽象类和接口有什么区别

    抽象类和接口区别     1 一个子类只能继承一个父类,但可以实现多个方法     2 抽象类可以有构造函数,属性,方法具体实现         接口不能有构造函数,属性,方法必须是抽象的     3 ...

  9. 什么是(抽象方法,普通方法,抽象类、接口),区别又是什么?

    抽象方法与普通方法的区别 1.抽象方法不具有方法体 ,而普通方法有方法体 2.抽象方法需要用abstract修饰 //声明一个抽象类 abstract class Demo {//声明一个抽象方法ab ...

最新文章

  1. Android6.0------权限申请管理(单个权限和多个权限申请)
  2. margin和padding分别适合什么场景使用?
  3. DCMTK:测试DcmSCU的C-FIND / GET / MOVE会话处理
  4. Linux为什么可以在x86平台上运行,考虑在x86/Linux平台上的应用程序,以下指令执行时可能......
  5. OneZero团队Beta发布剧透
  6. CSS干货直击:腾讯无边界访问控制体系建设
  7. 最全的mysql 5.7.13_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
  8. Python的10个神奇的技巧
  9. Unknown initial character set index ‘255‘ received from server.
  10. 使用webots对并联结构进行仿真
  11. Cannot pull, git cannot resolve reference ORIG_HEAD
  12. 什么情况下选用mysql_在MySQL中,‘%’可以用在什么情况下?
  13. android x86_646,雷电模拟器4.0x86_64位版本即android 7.1 xposed安装
  14. 精品电子书分享 – 《JavaScript Enlightenment.PDF》
  15. 《近匠》专访Ayla Networks云平台工程部主管Sudha Sundaresan——企业级物联网云平台的设计与部署
  16. 量子计算(1)量子力学基本理论(上)
  17. Android 银联控件支付开发流程
  18. 揭秘阿里、腾讯、字节跳动在家办公的区别
  19. 彻底卸载iNotePad软件
  20. 【基于Arduino RFID门禁系统】

热门文章

  1. MPLS隧道——单域基础理论讲解
  2. 『Android』网络请求数据与JSON解析
  3. 如何双开太极中应用之教程篇!
  4. Window平台下的静默下载并安装软件脚本bat
  5. excel图表美化:堆栈式柱状图让趋势变化更明显
  6. matlab图像导数求积分_第二讲matlab求微分方程导数积分
  7. python-opencv 数据增广 柏松融合
  8. 伪代码书写规则(转)
  9. 【蓝桥杯08】——工厂灯光控制系统
  10. noi 9267 核电站