如果一个类含有抽象方法,则称这个类为抽象类。抽象类是用abstract关键词修饰的。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。如果一个类继承了抽象类,那么就必须为抽象类中的抽象方法提供定义。如果不那么做,那继承的类也为抽象类。( 抽象方法是一种特殊的方法,它只有声明,而没有具体的实现。)

抽象类和普通类一样,同样可以拥有成员变量和普通的成员方法。但是抽象类中的抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。


接口是对行为的抽象,是用interface关键词修饰的。

1、接口中也可以含有变量和方法。
2、但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)
3、而方法会被隐式地指定为public abstract方法(并且只能是public abstract方法,用其他关键字,比如private、protected、static、 final等修饰会报编译错误)
4、一般情况下接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量
5、另外JDK8允许接口中有 默认方法 、静态方法 。JDK9允许接口中有 私有方法 。它们都可以有具体的实现。


总的来说,抽象类和接口主要有以下三种区别:

1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3、一个类只能继承一个抽象类,而一个类却可以实现多个接口。

Java抽象类和接口的区别相关推荐

  1. java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  2. jdk1.8中,java 抽象类和接口的区别

    抽象类 特点: 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法. 3.抽象类中可以存在抽象方法. 4.如果一个类中有一个抽象方法,那么当前类一定是抽象类:抽象类中不一定有 ...

  3. java 抽象类与接口的区别及其在jdk中的应用

    什么是抽象类 一般而言含有抽象方法的类是抽象类,那什么是抽象方法? 就是只有方法名,没有方法体. 但是,要是没有抽象方法,你写个abstract class xx{} 这个也是抽象类~ 那么没有抽象方 ...

  4. Java 抽象类和接口的区别

    抽象类和接口的区别 1.抽象类是半抽象的,接口是完全抽象的 2.抽象类中没有构造方法,接口有构造方法 3. 类和类之间只能单继承,接口和接口之间可以多继承 4. 一个类可以同时实现多个接口,一个抽象类 ...

  5. java—抽象类与接口的区别

    抽象类与接口的区别 | 抽象类 接口 结构组成 普通类+抽象方法 全局常量+抽象方法 权限 任何权限 只能使用public 子类使用 使用extends关键字继承抽象类 使用implements关键字 ...

  6. JAVA抽象类和接口的区别【附经典分析用例Door】

    这篇文章对抽象类和接口说的很详细,希望对大家有所帮助. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大 ...

  7. Java抽象类与接口的区别

    很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...

  8. 【转】Java抽象类与接口的区别

    很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...

  9. 转载 java抽象类与接口的区别

    Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和inte ...

  10. Java抽象类和接口的区别和联系

    抽象类 注:先将抽象类中的两种方法解释完,再综合解释抽象类 抽象方法 应用场景:其下所有子类都应该有该方法但是大部分子类具体的执行步骤是有所不同的. 必须重写:也可以说"必须实现" ...

最新文章

  1. 2012年的这些经典书目你读了没?
  2. 定位AI交互技术服务商,声智科技完成近亿元A轮融资,将拓展安防、汽车等新场景
  3. python一千行入门代码-Python – 一次从文件中读取1000行
  4. Java多线程--synchronized修饰普通方法和修饰静态方法的区别
  5. DFS实现floodfill算法
  6. 初始DDD(领域驱动设计)
  7. python mysql res_python操作mysql(三)查询
  8. 计算机组成原理唐朔飞重点,计算机组成原理唐朔飞高分笔记
  9. Mac版PScc破解安装方法
  10. 1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
  11. 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
  12. 淘宝/天猫买家信息 API
  13. 去中心化身份(DID)赛道——构建Web3的社交通行证
  14. lombok导入报错,版本1.18.12已在maven本地仓库中
  15. 对应分析图解读的七种方法
  16. VirtualBox安装虚拟机并为其装系统
  17. 8.0强行转换后变成了7_如何将网页转换为 PDF,保存在本地备用?
  18. 局域网内PC通过笔记本共享上网
  19. 【C语言笔记】【宏定义系列】 绝对值
  20. CSDN新版个人空间不再显示注册日期,到搜索引擎快照备份下,呵呵

热门文章

  1. html div元素浮动,CSS实现元素浮动和清除浮动的方法
  2. 羊城杯和天翼杯的补充
  3. 在jetson xavier nx上制作docker镜像
  4. java获取url锚点_定位与锚点
  5. java i18n 实现_Spring Boot i18n(国际化)实现
  6. Fastjson 1.2.24 反序列化漏洞复现
  7. 我生存的意义在于取悦我自己
  8. Css 清除浮动的几种方法
  9. 企业实战-Kubernetes(十一)Kubernetes监控
  10. ubuntu下texmaker安装及配置