2019独角兽企业重金招聘Python工程师标准>>>

春招开始了,盆友们都忙着准备笔试、准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想事成,梦圆2016,加油!

进入正题,今天总结了一下Java中抽象类和接口在概念、语法和应用上的区别和关系,分享给大家,希望给大家帮助,如有错误或者不足之处敬请指正。

一、概念

Java中抽象类和接口在概念上有本质的区别,抽象类是对类也就是对根源的抽象,而接口是对动作的抽象,接口是一种特殊形式的抽象类。比如猫和狗,他们都是动物,那么动物就可以作为抽象类,“每个猫或狗都是(is a)动物”,他们都会叫,都拥有叫这个动作,那么叫就可以作为一个接口供猫和狗去实现。

二、语法

1、含有abstract修饰符的class 即为抽象类,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不一定是抽象的,不能有抽象的构造方法或抽象的静态方法,因为抽象类中定义抽象方法必须放在具体子类中实现,如果子类没有实现抽象父类中的所有方法,那么子类也必须定义为抽象类。

2、接口(interface)可以说成是抽象类的特例。接口中的所有方法都必须是抽象的,接口中的方法定义默认为public  abstract 。接口中的变量是全局常量,即public static final修饰的。

3、接口和抽象类都不能被实例化

4、抽象类里可以有构造方法,而接口内不能有构造方法。

5、抽象类中可以有普通成员变量,而接口中不能有普通成员变量。

6、抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。

7、抽象类中可以包含静态方法,接口内不能包含静态方法。

8、抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public  static类型,并且默认为public static类型。抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

9、一个类可以实现多个接口,但只能继承一个抽象类。

三、应用

接口更多的是在系统框架设计方法发挥作用,主要定义模块之间的通信,而抽象类在代码实现方面发挥作用,可以实现代码的重用。当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。抽象类的功能要远超过接口,但是定义抽象类的代价高。因为每个类只能继承一个类,在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口,这可以降低设计阶段难度。

转载于:https://my.oschina.net/limiaoneu/blog/631391

Java中抽象类和接口在概念、语法和应用上的区别和关系相关推荐

  1. 关于Java中抽象类和接口的一点思索

    Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...

  2. Java中抽象类和接口的区别?

    抽象类和接口的概念 抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以 ...

  3. java中抽象类和接口的作用与区别

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

  4. 详细解析Java中抽象类和接口的区别

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

  5. 【转】详细解析Java中抽象类和接口的区别

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

  6. 详细解析Java中抽象类和接口的区别(很容易理解错)

    2007-09-28 12:17作者:doublel出处:论坛整理责任编辑:方舟 在Java语言中, abstract class 和interface是支持抽象类定义的两种机制.正是由于这两种机制的 ...

  7. Java中抽象类和接口

    一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: 1 abstract void fun(); 抽象方法必须用abst ...

  8. Java中抽象类和接口的区别(来源一)

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

  9. 详细解答Java中抽象类和接口的区别问题!

    接口(Interface)和抽象类(Abstract Class)是支持抽象类定义的两种机制. 一.抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称 ...

最新文章

  1. html流式布局怎么用,css 流式布局什么意思?
  2. VS2010与.NET4系列 5.代码优化的Web开发轮廓
  3. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)
  4. 理解Java的NIO
  5. Segment Routing — SRv6 — 统一的 SDN 控制面与数据面
  6. Python 技术篇-用os库读取本地文件的字节数、文件大小
  7. .NET Core 容器化调查
  8. 1190 最小公倍数之和 V2
  9. 游戏美术是什么?真的有“钱”景吗?
  10. 突然!格力电器向全体股东分红36.1亿元 董明珠得2600万
  11. 作为程序员,起码要知道的 Python 修饰器!
  12. 为了探究不同光照处理_昭通2020名师助考? 丨掌握控制变量法轻松搞定中考物理实验探究题...
  13. epoll监听文件_linux网络编程之epoll源码重要部分详解
  14. 用Bat脚本写一个无限弹窗代码
  15. 2020高压电工考试及高压电工复审模拟考试
  16. 有关初始位置检测,死区补偿,弱磁,MTPA,Foc保护措施
  17. 苹果sf字体_全网首发丨iOS13越狱系统字体分析+iOS13新字体分享
  18. 小飞鱼通达二开 致远OA A8+ 设计工作流实例初体验(图文)
  19. 使用app管理家庭路由器(TP-Link,水星,腾达等)
  20. 亚马逊云服务AWS Marketplace “重塑”企业软件SaaS之旅

热门文章

  1. FreeRTOS---堆内存管理(一)
  2. vm磁盘映射 不能启动_Oracle的启动与关闭-数据库(4)
  3. linux中的man文档结构
  4. django models模型 内部类 class Meta 简介
  5. matlab频率阻抗,有分析阻抗的matlab脚本吗?
  6. html类名定义规则_HTML入门笔记1
  7. linux 消息队列机制
  8. 【干货】mysql建表语句注释
  9. 被面试官问的Android问题难倒了,成功入职字节跳动
  10. 移动端上传大文件到服务器,android上传大文件到服务器地址