接口和抽象类的区别(*)

语法上
  • 相同点

    • 接口和抽象类都能定义属性和方法
    • 接口和抽象类都只是特殊的类,都是通过子类来操作
    • 抽象类和接口中都可以没有抽象方法
    • 接口和抽象类都不能直接创建对象
    • 接口和抽象类都可以利用多态操作
    • 抽象类和接口的子类都必须实现里面的抽象方法
    • jdk1.8以后,接口和抽象类都可以拥有带有方法体的方法
  • 不同点
    • 接口可以多实现,而抽象类只能单继承
    • 抽象类中的方法,可以用protect和abstract修饰,而接口中,都是默认的public abstract修饰
    • 抽象类可以像普通类一样有自己的普通方法,但是接口不可以
    • 属性上,接口中只能是public static final修饰的,抽象类中任意
    • 抽象类中可以拥有静态代码块的,接口中不能拥有静态代码块
    • 抽象类可以拥有自己的构造,接口没有构造,不能拥有
    • 接口之间可以多继承,抽象类只能单继承
    • 接口在1.8之后可以拥有default修饰的方法,抽象类没有
设计理念
  • 抽象类:是自下而上的设计。类之间存在一定的关系,is-a,终极目标是实现代码的复用
  • 接口:是上而下设计,一般先设计好接口,然后在具体的业务中去实现的,
  • 抽象类是对事物的抽象。接口是对行为的抽象,都是方法,方法的集合。接口建立一个like-a的关系
  • 抽象类会增加类之间的耦合度,接口会降低类之间的耦合度。
  • 接口一旦修改,下面所有的实现类都要修改。
  • 接口是对抽象类更深层次的抽象
总结

抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能修改的数据集合。两者都不能被实例化。接口就是抽象类的一种特殊情况。

接口和抽象类的区别(面试题)相关推荐

  1. java 关注公众号没有调接口_高频面试题:接口和抽象类的区别

    作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...

  2. java接口和抽象类的区别(经典面试题)

    java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...

  3. Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

    前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...

  4. java接口和抽象类的区别

    Java基础之接口与抽象类的区别 1.基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类, ...

  5. Java基础之接口与抽象类的区别

    1.基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法 ...

  6. python接口和抽象类的区别_接口和抽象类有什么区别?

    最近团队在招人:阿里新零售事业群CBU技术部招Java高级&专家,团队主要负责B2B工业品牌业务,坐标杭州滨江,有兴趣的小伙伴私戳我. **************************** ...

  7. 接口与抽象类的区别和联系

    接口 1.因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但是可以实现多个接口,同时接口本身也可以继承多个接口. 2.接口里面的成员变量默认是public static final类 ...

  8. 接口和抽象类的区别?

    接口和抽象类的区别? 我先来说说它们俩在语法上的区别吧,然后再来谈谈我的个人理解. 抽象类可以有具体的方法和属性,  接口只能有抽象方法和常量. 抽象类使用abstract修饰,接口使用interfa ...

  9. 【转载】接口和抽象类的区别 --相信你看完不会再混淆了

    原文地址:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html 我想,对于各位使用面向对象编程语言的程序员来说,&qu ...

最新文章

  1. WebRTC:并非解决音视频应用所有问题的银弹
  2. 力扣——回文数(Java)
  3. 【计算机网络】OSI参考模型与TCP/IP分层模型详解(超级详细,三张图完整说明)
  4. 动态链接库的隐式动态链接和显示动态链接
  5. SSH框架总结(框架分析+环境搭建+实例源码下载
  6. Html5固定链接生成二维码的技巧
  7. 用fact函数算阶乘
  8. 暴雪这次可真不要脸。。。
  9. JS监听鼠标滑轮事件
  10. python:cv2.VideoCapture().get()/.set()及cv2.VideoWriter_fourcc()
  11. ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
  12. 基于部标1078视频协议和苏标Adas协议构建主动平台
  13. CGTrader新赛CG Wildlife Challenge(CG野生生物竞赛)重磅推出
  14. 1个损坏的数据库情况
  15. mac搭建python开发环境_Mac打造python2 python3开发环境
  16. 兰州交通大学计算机科学与技术专业排名,2017兰州交通大学全国排名多少位
  17. 为什么数组的下标是从0开始而不是从1开始?
  18. C# 计算太阳倾角、太阳高度角
  19. Python 使用csv库处理CSV文件
  20. python:实现meme生成器(附完整源码)

热门文章

  1. html2canvas 插件实现网页截图(html保存为图片)
  2. C.H. Robinson罗宾逊全球物流推出跨欧亚铁路货运服务
  3. React全家桶(二)组件化编程
  4. canvas旋转图片
  5. 申通快递:核心业务系统云原生化上云技术详解
  6. 华为freebuds 5无线充电充不上电怎么办?
  7. 2-TDengine客户端连接,RESTful,JDBC
  8. PS/2键盘显示感叹号 报(代码10)错误
  9. 硬盘供电不足引起的系统不正常现象
  10. 这么多年不容易...我很庆幸等到现在的你——知乎上关于男人成熟的好故事