是的,他们是不同的.

通过接口,客户端可以实现它以及扩展类:

class ClientType implements YourInterface, SomeOtherInterface { //can still extend other types

}

使用类,客户端将能够扩展它,但不扩展任何其他类型:

class ClientType extends YourClass { //can no longer extend other types

}

当接口或抽象类只有一个抽象方法声明时,会出现另一个不同之处,它与匿名函数(lambdas)有关.

正如@AlexanderPetrov所说,具有一种方法的接口可以用作功能接口,允许我们“在运行中”创建功能,其中指定了功能接口类型:

//the interface

interface Runnable {

void run()

}

//where it's specified

void execute(Runnable runnable) {

runnable.run();

}

//specifying argument using lambda

execute(() -> /* code here */);

这不能用抽象类来完成.

所以你不能互换使用它们.不同之处在于客户端如何使用它的局限性,这是由JVM的语义强制执行的.

至于资源使用的差异,除非它导致您的软件问题,否则不必担心.使用内存管理语言的想法是不要担心这些事情,除非你遇到问题.不要预先优化,我确定差异是可以忽略的.即使存在差异,也应该重要的是它是否可能导致您的软件出现问题.

如果您的软件存在资源问题,请分析您的应用程序.如果它确实导致内存问题,您将能够看到它,以及每个消耗的资源量.在那之前,你不应该担心它.您应该更喜欢使代码更易于管理的功能,而不是消耗最少量的资源.

java普通类方法的区别是什么_java – 普通接口类和只有抽象方法的抽象类之间有什么区别吗?...相关推荐

  1. java中类图概念,程序员眼中的UML(4)--类图释疑之一,Attribute和Property之区别

    程序员眼中的UML(4) --类图释疑之一,Attribute和Property之区别 上一篇中提出了很多问题,其中最令人费解的可能就是Attribute和Property之区别了吧.我在网络上寻找良 ...

  2. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  3. 百度地图java计算2个坐标建距离_Java开发之百度地图2 :计算两地之间的距离

    package com.***********.util; import java.awt.geom.Point2D; /** * 百度工具类 * * @author qyx * */ public ...

  4. java中random方法取值范围_java的Random类详解

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  5. java时间往后延后一年_java中时间类(util Date)的后延与前推处理

    当后延或者前推的天数在一定时间之内时,可以用以下方法处理 public static Date  getValidEndTime(Date date,int validDayCount){ Simpl ...

  6. java数组索引越界异常如何解决_java之ArrayIndexOutOfBoundsException数组越界与IndexOutOfBoundsException索引越界之间关系...

    ArrayIndexOutOfBoundsException与IndexOutOfBoundsException之间的关系是继承关系,看源代码就可以知道: public class ArrayInde ...

  7. java中的缩小_在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?...

    Java中的类型转换用于将一种类型的对象或变量转换为另一种类型.当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容.如果合适的话,它将顺利进行,否则会丢失数据. Java中的类型转换类型 ...

  8. java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索

    FileFilter概述 java.io.FileFilter是一个接口,是File的过滤器. 该接口的对象可以传递给File类的listFiles(FileFilter filter)作为参数,Fi ...

  9. java集合框架中抽象有序列表的接口是_JAVA基础接口集合框架

    接口 -------------------------------------------------------------------------------- 一.接口(是一种规范) 1.接口 ...

最新文章

  1. mask rcnn算法原理图_基于MASK RCNN算法实现瑕疵图像识别(训练模型及应用)
  2. 回溯算法(八皇后问题)
  3. mysql数据库latin1转utf8_三种转换Mysql数据库数据编码的窍门-latin1转utf8
  4. 圆周率的代码表示,以及对其的理解。
  5. pytorch报错RuntimeError: error in LoadLibraryA
  6. 2018最佳GAN论文回顾(上)
  7. 监听器第一篇【基本概念、Servlet各个监听器】
  8. How to Leak a Context: Handlers Inner Classes
  9. 贺利坚老师汇编课程37笔记:运用栈加两层循环之把六个字符串里的字母都改写成大写字母
  10. maya 替换名称_maya替换对象,MAYA
  11. 关于电脑的基础知识_电脑基础知识:关于硬盘知识你有必要知道的几件事!
  12. 【优化预测】基于matlab差分进化算法优化BP神经网络预测【含Matlab源码 1315期】
  13. 算法在身边——学习算法从妈妈的菜谱开始
  14. cd linux自带系统安装,大神示范win7系统将CDLinux装入硬盘的法子
  15. python中逗号在print的作用_Python中逗号的三种作用
  16. Android Alarm闹钟
  17. zblog导航小智收录网导航模板
  18. leetcode 最常见的150道前端面试题(简单题下)
  19. 请排列RJ45交叉双绞线水晶头的顺序?
  20. Druid基本概念及架构介绍

热门文章

  1. C++项目库包含,dll引用问题,直接把缺失的dll或库放置可执行文件里
  2. 通过点击事件监听 setOnClickListener 彻底理解回调-Android
  3. Aspose.Cells使用总结大全
  4. [C#] Direct2D 学习笔记 (一)vb.net转换为c#
  5. Android—APK、JVM-Dalvik-ART
  6. Linux登录界面消失解决办法
  7. Android开发之RecyclerView动态添加item长按删除item源码
  8. Android mergeDebugResources'. Error: java.util.concurrent.ExecutionException: com.android.ide.comm
  9. oracle数据库的诊断目标位置,刚安装的数据库卸载 指定数据库的诊断目标位置不存在...
  10. golang websocket conn.close关闭错误_Websockets 与在golang中的应用