抽象类和接口的区别(通俗易理解)
目录
一、抽象类
1.1 抽象类概念:
1.2 抽象类特点
1.3 抽象类存在价值
二、接口
2.1 接口的概念
2.2 接口的特点
2.3 接口存在价值
三、接口和抽象类的关系
3.1 接口和抽象类相同点
3.2 接口和抽象类的区别
一、抽象类
关键字: abstract 是模棱两可的,似是而非的,无法给出具体明确的
1.1 抽象类概念:
- 一个方法无法给出具体明确的,该方法可以声明为抽象方法
- 拥有抽象类方法的类,叫做抽象类
1.2 抽象类特点
- 继承了抽象类的子类,要么对父类的抽象方法进行重写,要么自己也是抽象类
- 抽象类也可以拥有普通方法
- 抽象类不能创建对象
- 抽象类也有构造方法,但是是为了子类创建对象使用
1.3 抽象类存在价值
模板模式:由于抽象类既能拥有普通的方法,又有抽象的方法,这样,抽象类既能自己完成一些功能,又给子类提供无限的可能。
二、接口
关键字:interface
2.1 接口的概念
比抽象还抽象,或者说是一种特殊的抽象类
2.2 接口的特点
- 不能实例化
- 没有构造方法
- 方法默认public abstract修饰
- 变量默认public static final修饰
2.3 接口存在价值
- 定义了规则:一个类可以同时实现多个接口
- 拓展了程序
三、接口和抽象类的关系
3.1 接口和抽象类相同点
都是不断抽取出来的抽象概念
3.2 接口和抽象类的区别
- 接口是行为的抽象,是一种行为的规范,接口是like a 的关系;抽象是对类的抽象,是一种模板设计,抽象类是is a 的关系。
- 接口没有构造方法,而抽象类有构造方法,其方法一般给子类使用
- 接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
- 抽象体现出了继承关系,继承只能单继承。接口提现出来了实现的关系,实现可以多实现。接口强调特定功能的实现,而抽象类强调所属关系。
- 接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
注:JDK1.8中对接口增加了新的特性:
(1)默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;(2)静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。
抽象类和接口的区别(通俗易理解)相关推荐
- Java每日一课:理解抽象类和接口的区别与联系
抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文章各位都能从容地明了二 ...
- C#抽象类与接口的区别【转】
C#抽象类与接口的区别[转] 一.抽象类: 抽象类是特殊的类,只是不能被实例化(可以用派生类实例化基类对象):除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法(当然它可以有普通方法 ...
- 问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等
文章目录 1. Java创建对象有哪四种方式? 2. 什么是maven?maven的核心功能有哪些? 3. 什么是MVC?说说分层的好处. 4. Spring的两大核心技术是什么? 5. 什么是IOC ...
- C#中抽象类和接口的区别
一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...
- C#中抽象类和接口的区别与使用
一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...
- C++中的抽象类以及接口的区别联系
一.抽象类和接口 抽象类: 抽象类是特殊的类,不能被实例化(将定义了纯虚函数的类称为抽象类):除此以外,具有类的其他特性: 重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能包括普通的方法 ...
- java 抽象类与接口区别是什么_JAVA中抽象类与接口的区别,分别在什么情况下使用它们...
在网上看到很多人问关于"抽象类与接口的区别",因此本人想通过自己多年对JAVA开发的经验来总结一下抽象类与接口的区别以及分别在什么情况下使用它们. 在Java语言中, abstra ...
- java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- Java学习系列之抽象类和接口的区别和联系
导读 本文首先分别介绍抽象类和接口的基础概念.特征和应用场景,然后介绍其区别和联系. 1 抽象类 1.1 定义抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修 ...
- C#中抽象类和接口的区别与应用场景
一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...
最新文章
- windows下python脚本程序的运行
- linux下kill命令小结
- UOJ42/BZOJ3817 清华集训2014 Sum 类欧几里得
- [转]C++中sleep()函数的使用
- 关于EFCore线程内唯一
- 数独题的生成与解决方法
- lua和torch的安装
- 可变参数宏__VA_ARGS__和...
- 资管新规这样规定,我的货基该怎么办?
- LG解bl锁并获取root
- 票据纸张尺寸对照表_纸张小科普 | 白卡纸
- Java就业面试问题大全
- WordPress the_excerpt()截取摘要长度
- 定时任务(每晚12点执行)
- visual stadio code(VS code) 中 Markdown简明操作[持续更新]
- 【毕业设计】基于STM32及OpenMV的云台追踪装置
- 淘宝百亿补贴的发展及日后玩法应对策略[淘宝子评价查询接口]
- Chrome Custom Tabs最佳实践
- execution切入点表达式
- html语言文字闪烁,CSS3+HTML5特效6 - 闪烁的文字
热门文章
- git clone与pull的区别
- TwinCAT NC轴控制第三方伺服报错4655原因
- 《失业的程序员》(十三):平衡(转载)
- 林宥嘉发声明讽邓紫棋没智慧 主动提分手
- 断开服务器后jenkins也跟着关闭(已解决)
- Linux常用指令(4)------vim操作命令
- 产品定价数字能量测试_什么是数字产品?
- 专访|这家传统保险中介如何借力大数据优化“卖保险”流程?
- 解决错误:RuntimeError: result type Float can‘t be cast to the desired output type __int64
- 无意中看到程序员的电脑,居然装了一个宇宙!!!