面试题:接口和抽象类的区别
区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。
区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。
区别三,继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。
区别四,在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。
如下给出两者的简单对比表格。
接口 |
抽象类 |
|
多继承 |
支持 |
不支持 |
类型限制 |
没有 |
有,只能是引用类型 |
方法实现 |
继承类型中必须给出方法实现 |
继承类中可以不给出 |
扩展性 |
比较麻烦 |
相对比较灵活 |
多层继承 |
比较麻烦,需要借助虚函数 |
比较灵活 |
http://www.cnblogs.com/roky/archive/2008/02/21/1076332.html
转载于:https://www.cnblogs.com/min10/archive/2008/12/25/1362195.html
面试题:接口和抽象类的区别相关推荐
- 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 ...
最新文章
- Android之选项菜单和上下文菜单解析
- application.properties/yml文件读取
- qa 芯片测试_芯片测试术语介绍CP、FT、WAT
- c++标准程序库异常
- 微信小程序获取用户的 OpenId (附前端代码)
- mysql 数据修改时间_怎样修改mysql数据中的具体时间
- 转:SQL的内连接与外连接
- 用lsof恢复已删除的文件
- 【R】数据框data.frame的基本操作【1】
- matlab 请验证三角等式,[转载]matlab
- Win2003的IIS设置
- LoadRunner 11安装Micosoft Visual C++ 2005 SP1时提示命令行选项语法错误
- html5中怎么实现外边框中嵌入字_Web前端有什么优点?Web前端怎么入门?
- 老男孩python课后作业_老男孩Python全栈学习 S9 日常作业 001
- 大数据量点的地图展示,借助PostGIS实现动态点抽稀/聚合效果
- 程序员常见10大口头禅
- c++ 海战棋_GitHub - yifeitao/SimpleProgrammingProblems: 简单编程问题集中译版
- 基于 HTML5 Canvas 的机房温度云图展示
- onepunch的wp
- 计算机组成原理中J1J3是什么,计算机组成原理第一次实验报告
热门文章
- python在线编译-python在线编译器的简单原理及简单实现代码
- python测试开发自学教程-Web开发哪家强?看我用 Python 写一个颜值测试小工具
- python没基础可以学吗-终于认识没有基础怎么学python
- python画笑脸图案-如何让这些代码中的一个在窗口中绘制不同大小的笑脸?
- python导入txt为dataframe-Python提取TXT数据转化为DataFrame
- python语言入门p-python语言程序设计基础(第2版)课后答案嵩天
- python免费入门手册-Python 基础入门教程
- python3官方最新下载-python3.7
- 在Ubuntu上通过VNC Viewer连接Jetson nano桌面
- LeetCode Construct Quad Tree(dfs)