接口和抽象类的区别(面试题)
接口和抽象类的区别(*)
语法上
- 相同点
- 接口和抽象类都能定义属性和方法
- 接口和抽象类都只是特殊的类,都是通过子类来操作
- 抽象类和接口中都可以没有抽象方法
- 接口和抽象类都不能直接创建对象
- 接口和抽象类都可以利用多态操作
- 抽象类和接口的子类都必须实现里面的抽象方法
- jdk1.8以后,接口和抽象类都可以拥有带有方法体的方法
- 不同点
- 接口可以多实现,而抽象类只能单继承
- 抽象类中的方法,可以用protect和abstract修饰,而接口中,都是默认的public abstract修饰
- 抽象类可以像普通类一样有自己的普通方法,但是接口不可以
- 属性上,接口中只能是public static final修饰的,抽象类中任意
- 抽象类中可以拥有静态代码块的,接口中不能拥有静态代码块
- 抽象类可以拥有自己的构造,接口没有构造,不能拥有
- 接口之间可以多继承,抽象类只能单继承
- 接口在1.8之后可以拥有default修饰的方法,抽象类没有
设计理念
- 抽象类:是自下而上的设计。类之间存在一定的关系,is-a,终极目标是实现代码的复用
- 接口:是上而下设计,一般先设计好接口,然后在具体的业务中去实现的,
- 抽象类是对事物的抽象。接口是对行为的抽象,都是方法,方法的集合。接口建立一个like-a的关系
- 抽象类会增加类之间的耦合度,接口会降低类之间的耦合度。
- 接口一旦修改,下面所有的实现类都要修改。
- 接口是对抽象类更深层次的抽象
总结
抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能修改的数据集合。两者都不能被实例化。接口就是抽象类的一种特殊情况。
接口和抽象类的区别(面试题)相关推荐
- java 关注公众号没有调接口_高频面试题:接口和抽象类的区别
作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...
- java接口和抽象类的区别(经典面试题)
java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...
- Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)
前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...
- java接口和抽象类的区别
Java基础之接口与抽象类的区别 1.基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类, ...
- Java基础之接口与抽象类的区别
1.基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法 ...
- python接口和抽象类的区别_接口和抽象类有什么区别?
最近团队在招人:阿里新零售事业群CBU技术部招Java高级&专家,团队主要负责B2B工业品牌业务,坐标杭州滨江,有兴趣的小伙伴私戳我. **************************** ...
- 接口与抽象类的区别和联系
接口 1.因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但是可以实现多个接口,同时接口本身也可以继承多个接口. 2.接口里面的成员变量默认是public static final类 ...
- 接口和抽象类的区别?
接口和抽象类的区别? 我先来说说它们俩在语法上的区别吧,然后再来谈谈我的个人理解. 抽象类可以有具体的方法和属性, 接口只能有抽象方法和常量. 抽象类使用abstract修饰,接口使用interfa ...
- 【转载】接口和抽象类的区别 --相信你看完不会再混淆了
原文地址:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html 我想,对于各位使用面向对象编程语言的程序员来说,&qu ...
最新文章
- WebRTC:并非解决音视频应用所有问题的银弹
- 力扣——回文数(Java)
- 【计算机网络】OSI参考模型与TCP/IP分层模型详解(超级详细,三张图完整说明)
- 动态链接库的隐式动态链接和显示动态链接
- SSH框架总结(框架分析+环境搭建+实例源码下载
- Html5固定链接生成二维码的技巧
- 用fact函数算阶乘
- 暴雪这次可真不要脸。。。
- JS监听鼠标滑轮事件
- python:cv2.VideoCapture().get()/.set()及cv2.VideoWriter_fourcc()
- ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
- 基于部标1078视频协议和苏标Adas协议构建主动平台
- CGTrader新赛CG Wildlife Challenge(CG野生生物竞赛)重磅推出
- 1个损坏的数据库情况
- mac搭建python开发环境_Mac打造python2 python3开发环境
- 兰州交通大学计算机科学与技术专业排名,2017兰州交通大学全国排名多少位
- 为什么数组的下标是从0开始而不是从1开始?
- C# 计算太阳倾角、太阳高度角
- Python 使用csv库处理CSV文件
- python:实现meme生成器(附完整源码)