interface与abstract类的区别
interface与abstract类的区别
abstract class 只能被继承extends,体现的是一种继承关系,而根据继承的特征,有继承关系的子类和父类应该是一种“is-a”的关系,也即两者在本质上应该是相同的(有共同的属性特征)。
interface 是用来实现的implements,它并不要求实现者和interface之间在本质上相同,是一种“like-a”的关系,interface只是定义了一系列的约定而已(实现者表示愿意遵守这些约定)。所以一个类可以去实现多个interface(即该类遵守了多种约定)。
很多情况下interface和abstract都能满足我们要求,在我们选择用abstract或interface的时候,尽量符合上面的要求,即如果两者间本质是一样的,是一种“is-a”的关系,尽量用abstract,当两者之间本质不同只是简单的约定行为的话,可以选择interface。
特点:
(1)abstract类其实和普通类一样,拥有有自己的数据成员和方法,只不过abstract类里面可以定义抽象abstract的方法(声明为abstract的类也可以不定义abstract的方法,直接当做普通类使用,但是这样就失去了抽象类的意义)。
(2)一个类中声明了abstract的方法,该类必须声明为abstract类。
(3)interface中只能定义常量和抽象方法。在接口中,我们定义的变量默认为public static final类型,所以不可以在显示类中修改interface中的变量;定义的方法默认为public abstract,其中abstract可以不明确写出。
interface与abstract类的区别相关推荐
- Java技术——Interface与abstract类的区别
0. 前言 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在对多态提供了非常好的支持.他们两者有很大的相似,甚至可以互换,但是也有区别.对于他们的选择反应了你对该问题的 ...
- 接口(interface)和抽象(abstract)类的区别
2019独角兽企业重金招聘Python工程师标准>>> 接口与抽象类的区别: 1 两者表达的概念不一样.抽象类是一类事物的高度聚合,与子类的关系属于"是"的关系: ...
- abstract类与interface接口的区别
abstract类与interface接口的区别: abstract类:在一个类中的方法被abstract关键字修饰并且这个方法没有方法体,则这个类也必须使用abstract关键字修饰则这个类 ...
- abstract类和接口interface的联系和区别
一,用关键字abstract类修饰的类称为abstract类(抽象类). abstract class A{ ----. } 特点: 1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不 ...
- java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答
基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...
- abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白
前言 面向对象在百度百科中是这样解释的:"面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物".说的好像很流弊的样子,看看就行. 包的认识 1.1:包 ...
- Java中abstract类和abstract方法的相关问题
当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义. 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法. 抽象类存在 ...
- JAVA抽象类和接口类的区别
JAVA抽象类和接口类的区别 1.声明方式不同.抽象类为abstract class,接口类为interface. 2.继承抽象类关键字为extends,实现接口关键字为implements. 3.继 ...
- Java中的abstract方法和abstract类的问题
当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义. 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法. 抽象类存在 ...
最新文章
- 空气球+操作系统,海尔智能家居雄心何在?
- 博为峰Java技术题 ——JavaSE 类加载器Ⅰ
- node.js常见的模块
- 在职场,没有永远的朋友,也没有永远的敌人,因为只有利益
- Laravel Cache 的缓存文件在到期后是否会自动删除
- android 文本分页显示,Android查看带有列表视图的分页器并动态添加文本
- div标签清除float浮动样式方法
- 回文字符串,回文链表
- 调用平安银行接口返回GBK乱码问题
- GitLab中用户的五种权限 Guest、Reporter、Developer、Master、Owner
- 贴纸UI效果如何制作,4个做贴纸效果的小技巧
- 政务网中使用内部华为云
- 网页上的文字不能复制怎么办?
- mysql删除多表视图数据,【杂谈】怎样删除mysql数据表视图中数据
- Rails部署云环境配置(Passenger+Apache)
- 批处理登陆邮箱代码分析
- 计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议
- 飞信免费发短信API
- 平流式沉淀池流量计算_平流沉淀池设计计算
- 一秒钟看懂SaaS、CRM、OA、ERP、HR、进销存
热门文章
- 广域网加速及优化解决方案
- Opencv 基本操作五 各种连通域处理方法
- byzantine模型中tpm的应用
- autoit与程序化交易软件开拓者TB无人值守之一——启动开拓者TB并将每天收盘时的账户权益写入EXCEL
- c语言程序设计黑马答案,【上海校区】C语言程序设计100例之
- Web 2.0 用户界面技术
- 香港科技大学(广州)刘浩老师招收数据挖掘方向全奖博士/硕士
- 机器学习-使用FP-Growth算法来高效发现频繁项集
- 深度deepin自研软件包格式“玲珑”:兼容所有Linux发行版
- US5M-ASEMI贴片快恢复二极管US5M