java 接口和抽象类的一个最大的区别
写在前面,下面是在百度百科上看到的,之前就看过,这次再看感觉有更深的体会,真的是这样,每一个脚印都会留下痕迹
java接口和java抽象类有太多相似的地方,又有太多特别的地方,这里说下两者之间的一个最大的区别:
1.java抽象类可以提供某些方法的实现,但是java接口不可以,这个可能是java抽象类唯一的优点,但是这个优点非常有用,如果向一个抽象类里加一个新的具体的方法,那么它所有的子类一下子都得到了这个新方法。
而java接口就做不到这一点,如果向一个java接口里加入一个新方法,所有实现这个接口的泪就无法成功通过编译了,因为必须让每一个继承这个接口的类都再实现这个方法才行,很明显这是java接口的缺点。
2.一个抽象类的实现只能有它的子类给出,java只能单继承,所以抽象类要是作为类型定义工具的话就不好使了。在这一点上,接口的优势就出来了,任何一个实现了java接口的规定方法的类都可以具有这个接口的类型,而一个类又可以实现任意多个java接口,从而这个类就有了多种类型,所以java接口是定义混合类型的理想工具,混合类意思是一个类不仅具有某个主类型的行为,而且具有其他的次要类型行为。
java 接口和抽象类的一个最大的区别的更多相关文章
- 初探设计:Java接口和抽象类何时用?怎么用?
今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...
- Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?
Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09| 分类: JAVA | 标签:java |举报|字号 订阅 下面比较一下两者的 ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- Java接口和抽象类的区别
今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征: 继承:存在继承关系的子类和父类 重写:子类 ...
- java接口和抽象类
关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...
- Java—接口与抽象类
一.接口 Java编程语言中禁止多继承属性,但可以通过接口来帮助类扩展方法.接口中可以定义大量的常量和方法,但其中的方法只是一种声明,没有具体的实现,使用接口的类自己实现这些方法. 接口与类的不同在于 ...
- java接口与抽象类的区别
接口可以是标志接口,里面没有任何常量和方法. 抽象类不一定必须有抽象方法,也可也没有方法,但含抽象方法的类必须被声明为抽象类. 在抽象层次结构中,Java接口在最上面,然后紧跟着抽象类,然后是一般类. ...
- Java接口和抽象类的实现方法
一.java中的接口本质上是加约束的抽象类 //抽象类 public abstract class AExample { public abstract int add(int x,int y); p ...
- Java 接口和抽象类差别
原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...
随机推荐
- nginx连接php测试
1 nginx连接php [root@web01 /application/nginx/conf/conf.d]# cat docs.conf server { server_name docs.ol ...
- rabbitmq数据备份与还原
一.场景 现在有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户.vhost.队列.交换和绑定)和消息数据,而消息 ...
- Opencv---零碎记录
OpenCV支持CPU和OpenCL推断,但OpenCL只支持Intel自家GPU,Satya设置了CPU推断模式(cv.dnn.DNN_TARGET_CPU) https://docs.opencv ...
- linux网络编程之posix条件变量
今天来学习posix的最后一个相关知识----条件变量,言归正传. 下面用一个图来进一步描述条件变量的作用: 为什么呢? 这实际上可以解决生产者与消费者问题,而且对于缓冲区是无界的是一种比较理解的解决 ...
- 读入 并查集 gcd/exgcd 高精度 快速幂
ios_base::sync_with_stdio(); cin.tie(); ], nxt[MAXM << ], Head[MAXN], ed = ; inline void added ...
- Java中CAS-ABA的问题解决方案
忻州SEO摘要 CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS. 了解CAS(Compare-And-Swap) CAS即对比交 ...
- 使用Python+selenium实现第一个自动化测试脚本
原blog 一,安装Python. python官方下载地址:https://www.python.org/downloads/ 安装后点击开始菜单,在菜单最上面能找到IDLE. IDLE是pytho ...
- (6)打鸡儿教你Vue.js
循环语句 循环使用 v-for 指令 <div id="app"> <ol> // 有序 <li v-for="item in items& ...
- FF,NF,BF
设计一个可变式分区分配的存储管理方案.并模拟实现分区的分配和回收过程. 对分区的管理法可以是下面三种算法之一: 首次适应算法 循环首次适应算法 最佳适应算法 对于测试样例 : 首地址 大 ...
- 提高python运行效率的方法
让关键代码依赖于外部包:你可以为紧急的任务使用C.C++或机器语言编写的外部包,这样可以提高应用程序的性能 使用生成器,因为可以节约大量内存 多个if elif条件判断,可以把最有可能先发生的条件放到 ...