抽象类和接口的概念以及区别
定义
抽象类:它是一种特殊的、不能被实例化的类,只能作为其他类的父类使用。使用abstract关键字声明。
接口:它是一种特殊的抽象类,也是一个特殊的类,使用interface关键字声明。
相同点
1 两者都是抽象类,都不能实例化。
2 interface实现类及abstract class的子类都必须要实现已经声明的抽象方法。
区别
1 从关键字implement看,表示实现,既interface表示需要具体的类去实现;
而关键字extends表示为扩展,abstract class需要继承的方式让子类实 现功能。
2 抽象类中有数据成员,可以实现数据的封装;
接口没有数据成员。
3 抽象类中可以有构造方法;
接口没有构造方法。
4 抽象类的方法可以通过private、protected、public关键字修饰(抽象方法 不能是private);
接口中的方法只能使用public关键字修饰。
5 一个类只能继承于一个抽象类;
一个类可以同时实现多个接口。
6 抽象类中可以有成员方法的实现代码;
而接口中不可以有成员方法的实现代码。
7 abstract class 强调所属关系;
interface强调特定功能的实现;
8 interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现;
abstract class的子类可以有选择地实现。这个选择有两点含义:
a) abstract class中并非所有的方法都是抽象的,只有那些冠有abstract 的方法才是抽象的,子类必须实现。那些没有abstract的方法,在 abstract class 中必须定义方法体;
b) abstract class 的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
应用场合
interface
1 类与类之间需要特定的接口进行协调,而不在乎其如何实现。
2 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
3 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
4 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
abstract
1 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
2 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
3 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。
抽象类和接口的概念以及区别相关推荐
- Java中抽象类和接口在概念、语法和应用上的区别和关系
2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...
- 抽象类和接口的共同点和区别
抽象类和接口个共同点和区别: 共同点: 不能实例化,都可以被继承 不同点: 抽象类有构造器,单继承性 接口没有构造器,多继承性
- 抽象类和接口的联系与区别
抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- java中抽象类和接口的作用与区别
抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract ...
- 每个程序员都必须搞懂的抽象类和接口的含义以及区别
你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类( ...
- Java中类、抽象类、接口的联系与区别
类.抽象类.接口是Java中相似而又很不同的知识点.在此记录一下初学者的我对于三者的认识. 简单介绍 类(class)可以理解为将某一类事物的共同属性或行为进行归纳抽象.比如学生.医生都是特定的类,他 ...
- 【面试题】抽象类和接口的联系和区别
接口与抽象类的联系与区别 接口 抽象类 联系 1.都不能被实例化: 2.都位于继承树的顶端,用于被其他类实现和继承: 3.都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法. ...
- Java中抽象类和接口之间的区别
一些受欢迎的访谈问题是"抽象类和接口之间有什么区别","什么时候使用抽象类以及什么时候使用接口". 因此,在本文中,我们将讨论这个主题. 在探讨它们之间的差异之 ...
- Java中抽象类和接口的区别?
抽象类和接口的概念 抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以 ...
最新文章
- matlab的帮助命令是英文的,4 Matlab 帮助系统
- [原创]SQL 表值函数:获取从今天计算起往前自定义天数
- nodejs v8引擎
- EMNLP 2020 | 基于超边融合的文本增强知识图谱开放域问答
- SAP Marketing Cloud功能简述(五) : 销售计划管理
- CF 1529C Parsa‘s Humongous Tree
- CefSharp 支持MP4
- Java 多态的实现机制
- (转)word2vec前世今生
- Linux Ctrl+c与ctrl+z的区别
- Android 四大组件学习之BroadcastReceiver四
- 关于人工智能研究思路的一点设想
- dwg文件如何转换成pdf?
- MMDetection学习教程(一)
- 计算机删除行快捷键,删除快捷键是什么?电脑删除快捷键有哪些?
- 谈谈笔者是怎么拿到HFish社区活动仅有的500京东E卡
- Android 使用Arcore 实现多点测距
- Node系列-爬虫踩坑笔记
- Java解析JSON格式数据
- 使用selenium实现前程无忧简历自动刷新
热门文章
- 彭友会出品,绝对精品!史上最强DMBOK学习资料出炉!
- Python第三库下载大全
- %3c strong%3e html,模型绑定url编码的字符串mvc 3
- 在线沙箱网站 在线恶意文件监测网站 病毒在线监测网站 apk分析在线网站
- 14、模板方法模式(Template Method)
- UBUNTU18.04增加SWAP分区
- LVGL 8.2 按键增加菜单项
- 王者荣耀s24服务器维护,王者荣耀S24赛季开启时间
- 我的六年软件测试感悟(转载)
- python程序设计教程张莉课后答案_新课标教育背景下Python项目式学习模式研究