java中的abstract和interface差异
java中的abstract和interface差异
这里需要谈到抽象类和Interface的差别,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力,两者的区别如下:
(1)相同点
A,两者都是抽象类,都不能实例化。
B,interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
(2)不同点
A,interface实现,要用implements,而abstract class的实现,要用extends。
B,一个类可以实现多个interface,但一个类只能继承一个abstract class。
C,interface强调特定功能的实现,而abstract class强调所属关系。
D,尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),必须要实现。而abstract class的子类可以有选择地实现。
抽象类的这个选择有两点含义:一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
E,interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。
java中的abstract和interface差异相关推荐
- Java中抽象类 abstract和interface的区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...
- java中的abstract_浅谈Java中的Abstract方法
Abstract即抽象,是从众多的事物中抽取出共同的.本质性的特征,而舍弃其非本质的特征的过程.说到抽象,我们可能会想到许多抽象派的画家,比如说梵高,毕加索.有一说一,抽象这个词还真的是很抽象的,只可 ...
- [转载] Java中的abstract关键字
参考链接: Java中的abstract关键字 在Java中,一说到"抽象",肯定会想到abstract关键字,今天就来讲一下这个关键字. (1).在class前面添加abstra ...
- 解析java中的abstract关键字
解析java中的abstract关键字 1 含义 abstract:抽象的;是java中用来修饰类和方法一个关键字 2 为什么要用 2.1 当我们不想类能够实例化时(类实例化没有意义,例如Animal ...
- Java中的abstract方法和abstract类的问题
当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义. 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法. 抽象类存在 ...
- Java中 关键字abstract(抽像)的定义
一. abstract关键字 解释为抽象的,可以修饰:类,方法 1.1 abstract修饰类(抽象类) 一个被abstract修饰符修饰的类就是一个抽象类. public abstract clas ...
- Java中抽象(abstract)
目录 1.抽象类概述 2.抽象类的注意事项 3.模板设计模式 4.final关键字 5.abstract final static 关键字对比 6.代码块 1.抽象类概述 抽象方法: ...
- java中 wait()和sleep()的差异
相同点:一旦执行该两种方法,当前的线程都会进入阻塞状态 不同点:(1)两个方法声明的位置不同,Thread类中生命sleep(),Object类中生命wait() (2)调用的要求不同:sleep() ...
- java中的abstract
目录 1:abstract的作用 2:用法实例 1:abstract的作用 abstract用来修饰类和方法,表示抽象类和抽象方法,作用是将子类的公共属性和不能确认的方法提取到抽象类,确认的方法也可以 ...
最新文章
- Java项目:美食菜谱分享平台系统设计和实现(java+springboot+mysql+ssm)
- [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
- 1521 error1
- 【Excle数据透视表】如何创建非共享缓存的数据透视表
- JAVA大数--POJ 1715 大菲波数
- 【TensorFlow】——Windows10、pycharm、Python3.6.4中安装CPU和GPU两种版本的TensorFlow
- php中arraymultisort,php 数组函数array_multisort()用法
- 梯度下降优化算法总结
- 系统优化设计方案3.20周一例会
- zedgraph显示最小刻度_ZedGraph显示多条实时曲线
- 计算机程序员求职信英语作文,程序员英文求职信范文
- 我的世界风格字体 艺术字生成 Textcraft的介绍及使用
- 利用HttpWebRequest自动抓取51la统计数据
- seleniumwire获取百度指数
- 神经网络的权重初始化,神经网络的权值和阈值
- 2022年施工升降机司机(建筑特殊工种)考题及答案
- 简洁Python命名规范
- python勾股定理中三个数的关系是、找出三十以内的_从勾股定理到余弦相似度-程序员的数学基础...
- 【JS】两个等号和三个等号的区别
- php伪造来路301,使用 fsockopen 伪造来路
热门文章
- 事件控制块的原理与创建
- C++中类文件的分离
- mysql 2.71828_数学中的e=2.71828……到底是什么东西?
- mysql存储netcdf数据_关于NetCDF与HDF5存储科学数据的观点?
- python 栈道实现
- python发展前景怎么样-python发展前景怎么样
- 31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)
- 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践
- oracle v$access执行很慢,Oracle bug之v$access
- java 内存类_Java学习——类的生命周期和内存