抽象类和接口的区别

抽象类和接口的区别

大家好,又见面了,我是全栈君。

抽象类:
1)由abstract关键字修饰
2)包含抽象方法的类必须是抽象类不包含抽象方法的类也可以声明为抽象类
3)抽象类不能被实例化
4)抽象类是需要被继承的,需要重写或者声明为抽象类:
4.1)重写所有抽象方法
4.2)也声明为抽象类
5)抽象类的意义:
5.1)封装子类共有的属性和行为
5.2)为所有子类提供一种统一的类型
5.3)可以包含抽象方法,为所有子类提供统一的入口每个子类的实现不同,但入口是一致的
接口:
1)是一个标准、规范遵守了这个标准,就能干某件事
2)接口是一种数据类型(引用类型)
3)由interface定义
4)只能包含常量和抽象方法
5)接口不能被实例化
6)接口是需要被实现的,实现类:必须重写接口中的所有抽象方法
7)一个类可以实现多个接口,用逗号隔开若又继承又实现时,应先继承后实现
8)接口可以继承接口

抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,
那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

 

区别
1.语法层面上的区别
  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2.设计层面上的区别
  1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为
,但是接口却是对类局部(行为)进行抽象。

  2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。

转载于:https://www.cnblogs.com/CaiNiao-TuFei/p/7470855.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108190.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月6日 下午7:00
下一篇 2022年3月6日 下午7:00


相关推荐

  • OpenStreetMap初探(一)——了解OpenStreetMap

    OpenStreetMap初探(一)——了解OpenStreetMap

    2021年12月15日
    86
  • OpenClaw For Creation——在飞书上养一只“大龙虾”秘籍

    OpenClaw For Creation——在飞书上养一只“大龙虾”秘籍

    2026年3月13日
    3
  • linux nohup 命令详解

    linux nohup 命令详解nohup 命令及其输出文件 nohup 命令 如果你正在运行一个进程 而且希望退出账户时该进程不会结束 那么可以使用 nohup 命令 该命令可以在你退出账户 关闭终端之后继续运行相应的进程 nohup 就是不挂起的意思 nohangup 一般在 linux 下 nohup 格式 nohupcommand 或者 nohupcommand amp 这之间的差别是带 amp 的命令行 即

    2026年3月26日
    2
  • 故障艺术

    故障艺术GlitchArt 故障艺术 什么是故障艺术 我们熟知的抖音的 LOGO 正是故障艺术其中一种表现形式 它有一种魔幻的感觉 看起来具有闪烁 震动的效果 很吸引人眼球 故障艺术它模拟了画面信号出现故障导致成像错误的感觉 青色色块与红色色块无法重合就是这种故障的体现 从胶片时代开始到今天的数码时代 这种故障一直是观众非常熟悉的现象 即使抖音的 LOGO 只是静态的 大脑也会自己补完整个效果 甚至还会自己脑补信号干扰的噪音 当然 广义的故障艺术不仅仅指这种效果 我觉得是很宽泛的 本文将介绍一些 CSS 能

    2026年3月26日
    2
  • java抽象语法树_抽象语法树(AST)

    java抽象语法树_抽象语法树(AST)抽象语法树 AST 最近在做一个类 JAVA 语言的编译器 整个开发过程 用抽象语法树 AbstractSynt AST 作为程序的一种中间表示 所以首先就要学会建立相对应源代码的 AST 和访问 AST EclipseAST 是 EclipseJDT 的一个重要组成部分 定义在包 org eclipse jdt core dom 中 用来表示 JAVA 语言中的所有语法结构 EclipseAST 的总

    2026年3月16日
    1
  • 通过优启通制作U盘启动安装Windows系统「建议收藏」

    通过优启通制作U盘启动安装Windows系统「建议收藏」通过U盘启动安装Windows系统(一)制作启动项,拷贝镜像(EASYU软件)通过EASYU(优启通),制作启动盘,启动盘制作成功之后,在优启通主界面,模拟测试,选BIOS测试,若能进入,将win7的GHO镜像文件放入U盘.运行优启通点击“归还空间”,分区格式选择NTFS,点击“全新制作”。(UEFI和NTFS的区别在于,UEFI格式的启动盘不能放大于4G的GHO镜像文件,NTFS可以放大于4G的GHO镜像文件或者ISO镜像文件)制作完要检验一下启动盘是否制作成功,可

    2022年6月25日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号