普通类和抽象类的区别和联系

2023-05-16

包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

1、抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

2、抽象类不能用来创建对象;

3、如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

在其他方面,抽象类和普通的类并没有区别。

java抽象类和普通类的区别

1.抽象类不能被实例化。

2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。

3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体

4.含有抽象方法的类必须声明为抽象类

5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类。

接口和抽象类的区别

接口是行为的抽象,是一种行为的规范,接口是like a 的关系;抽象是对类的抽象,是一种模板设计,抽象类是is a 的关系。

接口没有构造方法,而抽象类有构造方法,其方法一般给子类使用

接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。

抽象体现出了继承关系,继承只能单继承。接口提现出来了实现的关系,实现可以多实现。接口强调特定功能的实现,而抽象类强调所属关系。

接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。对“接口为何是约束”的理解,我觉得配合泛型食用效果更佳。

而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实现了B,避免让所有的子类来实现B,这就达到了代码复用的目的。而A减B的部分,留给各个子类自己实现。正是因为A-B在这里没有实现,所以抽象类不允许实例化出来(否则当调用到A-B时,无法执行)。

————————————————

版权声明:本文为CSDN博主「tck66」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/tck66/article/details/126569274

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

普通类和抽象类的区别和联系 的相关文章

  • 内部类

    链接 xff1a https www nowcoder com questionTerminal 48524c47dd924887be6684b17175fa40 1 为什么使用内部类 使用内部类最吸引人的原因是 xff1a 每个内部类都能
  • CentOS 8本地离线YUM源的配置

    1 准备好CentOS 8相同版本号的系统镜像文件 2 添加光驱硬件 xff0c 在光驱中调用iso镜像文件 xff08 具体操作 xff1a 先打开设置里面的CD DVD xff0c 再点击使用ISO镜像文件 xff0c 选择浏览会跳转到
  • Linux操作系统:管理用户和组

    任务一 xff1a Linux用户类型和组群 1 Linux系统下的用户账户分为三种 超级用户 xff08 root xff09 xff1a 拥有系统的最高权限 xff0c 可以不受限制的对任何文件和命令进行操作 xff0c 对系统具有绝对
  • 在CentOS_8中添加新的硬盘

    添加新硬盘的具体步骤 xff1a 第一步 xff1a 第二步 xff1a 第三步 xff1a xff08 注意 xff1a 这里选择 SATA A xff0c 其优点是可随时使用 xff0c 无需重启 xff1b 而 SCSI S 需要重启
  • Linux下生产者消费者模型

    Linux下生产者消费者模型 一 什么是生产者消费者模型二 代码实现三 运行结果与修改 一 什么是生产者消费者模型 生产者消费者模型就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和消费者彼此之间不直接通讯 xff0c 而通过阻塞队
  • 开发一个支持跨平台的 Kotlin 编译器插件

    前言 前面简单介绍了一下Kotlin编译器插件是什么 xff0c 以及如何一步一步开发一个Kotlin编译器插件 xff0c 但是之前开发的编译器插件是通过修改字节码的方式来修改产物的 xff0c 只支持JVM平台 今天主要在此基础上 xf
  • 逆变器原理

    逆变器是把直流电转变为交流电的一种装置 它一般包括逆变桥 控制逻辑和滤波电路组成 主要是把各种直流源转变为交流供交流负载使用 xff0c 一般直流源有蓄电池 干电池 太阳能电池等 xff0c 可以应用到不间断电源 UPS 太阳能发电转换等
  • Linux网络编程

    目录 网络编程基础 Internet历史 TCP IP协议基本概念 网络体系结构 TCP IP体系结构 TCP IP协议知识要点 TCP协议和UDP协议 网络编程预备知识 基于TCP协议的网络编程案例 基于UDP协议的服务器客户端编写 1
  • Android12动态控制SystemUI状态栏和导航栏

    要实现一个需求 在Android12上实现动态控制状态栏和导航栏的显示及隐藏 基本思路 在frameworks base 中增加想要的显示控制 在Settings增加开关按钮进行功能出发 一 在framework base 增加系统属性 用
  • Java—反射详解

    1 反射概念 反射本质就是反着来 反射 Reflection 是Java的特征之一 xff0c 它允许运行中的Java程序获取自身的信息 xff0c 并且可以操作类或对象的内部属性 通俗的来讲就是 xff1a 通过反射机制 xff0c 可以
  • png图片损坏打不开如何修复?

    png格式是我们生活中常用的格式 xff0c 可以用于存储不同的网络图形 数码照片和背景透明的图像 但常用的PNG文件格式有时也会有损坏的 xff0c 在这种情况下 xff0c 要保持冷静 xff0c 发现后先不要去尝试打开这些图片 xff
  • cookie与session

    a 什么是cookie 浏览器在访问服务器时 xff0c 服务器将一些数据以set cookie 消息头 的形式发送给浏览器 浏览器会将这些数据保存起来 当浏览器再次访问服务器时 xff0c 会将这些数据以cookie消息头的形式发送给服务
  • GithubDNS解析配置

    hosts文件位置 xff1a Windows 系统 xff1a C Windows System32 drivers etc hosts 复制以下代码 xff1a GitHub520 Host Start 140 82 114 26 al
  • java:如何判断一个链表是否成环,并找到成环的位置

    面试题型 xff1a 判断一个链表中是否成环 思路 xff1a 定义两个快慢指针 xff0c 让他们一直移动 xff0c 如果最终快指针 61 慢指针 xff0c 这说明在这个链表中必然存在环 首先 xff0c 将快指针定义为fast 慢指
  • 基于zynq7000平台的vxWorks6.9移植(上)

    1 致谢 编写本文档的目的在于指导用户如何移植基于z7平台的vxWorks6 9系统 移植之前首先感谢西安迅尔电子嵌入式工程师庞国强 xff0c 本次是基于前者总结资料的基础上进行的完善 xff0c 帮助新手可以以更少的指导掌握z7平台关于
  • Python新建、写入和修改txt(文本文档)

    新建 写入 xff1a 创建一个txt文件 xff0c 文件名为first file 并向文件写入msg def File New name msg desktop path 61 34 路径 34 文件路径 full path 61 de
  • 面试突击:输入URL之后会执行什么流程?

    在浏览器中输入 URL 之后 xff0c 它会执行以下几个流程 xff1a 执行 DNS 域名解析 xff1b 封装 HTTP 请求数据包 xff1b 封装 TCP 请求数据包 xff1b 建立 TCP 连接 xff08 3 次握手 xff
  • 面试官:Spring Aop 常见注解和执行顺序

    最近 xff0c 我在给很多人做简历修改和模拟面试的时候 xff0c 有部分朋友和我反馈Spring AOP的面试题 xff0c 今天就和大家来问问 Spring 一开始最强大的就是 IOC AOP 两大核心功能 xff0c 我们今天一起来
  • Microsoft Visual C++ 14.0下载方法

    去官网下载对应的文件 xff08 需要拥有一个微软的账号 xff09 首先 xff0c 打开链接首页 Visual Studio Subscriptions Portal xff0c 登录账号 xff0c 点击进入下载页面 接下来 xff0

随机推荐

  • Zabbix6.0离线安装(附RPM包)

    zabbix server6 0安装包及依赖 一 准备工作 xff1a 虚拟环境软件VMware Workstation 17 pro xff0c 可以根据自身需求来选择 xff0c VMware下载链接参考如下 xff1a https c
  • java中try 与catch的使用

    try 代码区 catch Exception e 异常处理 代码区如果有错误 xff0c 就会返回所写异常的处理 首先要清楚 xff0c 如果没有try的话 xff0c 出现异常会导致程序崩溃 而try则可以保证程序的正常运行下去 xff
  • 基于JAVA京津冀畅游网设计计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA京津冀畅游网设计计算机毕业设计源码 43 数据库 43 lw文档 43 系统 43 部署 基于JAVA京津冀畅游网设计计算机毕业设计源码 43 数据库 43 lw文档 43 系统 43 部署 本源码技术栈 xff1a 项目架构
  • JSP 四大作用域:

    application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问 xff08 属性作用范围最大 xff09 session对象中的属性可以被属于同一个会话的所有Servlet和JSP页面访问 xff08 适
  • django基于Python的疫情数据可视化分析系统的设计与实现(源码调试+代码讲解+文档报告)

    x1f495 x1f495 作者 xff1a 计算机源码社 x1f495 x1f495 个人简介 xff1a 本人七年开发经验 xff0c 擅长Java 微信小程序 Python Android等 xff0c 大家有这一块的问题可以一起交流
  • 基于SSM+Vue个人健康信息管理系统Java个人健康状况记录与评估系统(源码调试+讲解+文档)

    x1f495 x1f495 作者 xff1a 计算机源码社 x1f495 x1f495 个人简介 xff1a 本人七年开发经验 xff0c 擅长Java 微信小程序 Python Android等 xff0c 大家有这一块的问题可以一起交流
  • DBSCAN聚类——Python实现

    一 DBSCAN Density Baseed Spatial Clustering of Applications with Noise 聚类算法 核心对象 xff1a 若某个点的密度达到算法设定的阈值则其为核心 xff08 即r邻域内点
  • 解决ubuntu操作系统默认没有创建root账户

    解决ubuntu操作系统默认没有创建root账户 xff1a 1 sudo passwd root重置root密码 会提示输入当前用户密码 xff0c 然后重新设置新密码 2 设置成功之后su root得到root登陆
  • hexo+github个人博客搭建(亲身经历超详解)

    Hexo 是一个快速 简洁且高效的博客框架 Hexo 使用 Markdown xff08 或其他渲染引擎 xff09 解析文章 xff0c 在几秒内 xff0c 即可利用靓丽的主题生成静态网页 本文章适用于windows系统搭建 xff0c
  • 数论----质数的求解(C/C++)

    CSDN的uu xff0c 你们好呀 xff0c 今天我们要学习的内容是 数论 哦 xff01 这也是算法题中的一类题目吧 记好安全带 xff0c 准备发车咯 xff01 x1f680 学习数论的意义 x1f4e2 算法导论说 xff1a
  • 源代码是指什么?

    源代码是指以特定编程语言编写的文本文件 xff0c 用于控制软件 硬件 计算机程序或系统 源代码是代表软件不同功能的一类 指令 下面我将详细说明源代码的定义 首先要说的是 xff0c 源代码是建立在编程语言之上的文本文件 它可用于编写程序
  • Java 中如何优化大量的 if...else...

    策略模式 xff08 Strategy Pattern xff09 将每个条件分支的实现作为一个独立的策略类 xff0c 然后使用一个上下文对象来选择要执行的策略 这种方法可以将大量的if else语句转换为对象之间的交互 xff0c 从而
  • Selenium+Pytest自动化测试框架实战,还不会点这里一清二楚,全网最细教程!

    如果下方文字内容没有看明白的话 xff0c 我推荐大家看一套视频 xff0c 比文字内容讲的更加详细 xff01 在华为工作了10年的大佬出的Web自动化测试教程 xff0c 华为现用技术教程 xff01 哔哩哔哩 bilibili 在华为
  • node(编写结构化程序)

    node js的使用 console log 39 小邹最黑 39 使用js文件 去执行NodeJS代码 掌握 1 在代码文件夹中 新建js文件 不要新建成html 里面写任意js代码 const skill 61 39 喵喵拳 39 co
  • ubuntu操作系统查看已安装的包

    dpkg的介绍 dpkg 是 Debian Packager 的简写 为 Debian 专门开发的套件管理系统 xff0c 方便软件的安装 更新及移除 所有源自 Debian 的 Linux 发行版都使用 dpkg xff0c 例如 Ubu
  • Java多线程开发之~~~多条件Condition接口的使用

    我们在多线程开发中 xff0c 可能会出现这种情况 就是一个线程需要另外一个线程满足某某条件才能继续运行 xff0c 或者需 要其他线程满足好几个条件才能运行 xff0c 对于这样的多条件的多线程并发 xff0c 我们如何控制好各个线程之间
  • 如何获取某一天股票数据接口

    怎么样去获取某一天的股票数据接口 xff0c 是需要讲究一定技术的 xff0c 首先是要求想要获取的人是否具备编程技术 xff0c 会不会使用编程语言 xff0c 比如Python C 43 43 Java等等 还有就是从证券机构上获取 x
  • Matlab数字图像处理 编写一个基于GUI的图像处理程序/软件,功能按钮和界面布局自己设定,遵循美观大方、方便操作的原则

    Matlab数字图像处理 压缩包包含 m和 fig文件以及文档 xff0c 具体实现标准参照以下要求 xff1a 第一部分 xff1a 编写一个基于GUI的图像处理程序 软件 xff0c 功能按钮和界面布局自己设定 xff0c 遵循美观大方
  • 多线程的理解

    多线程的作用和简介 xff1a 1 同时完成几项互不干扰的工作 xff0c 提高CPU使用率 比如高速的四车道和八车道 2 多线程就好比在等待水开的同时看报纸 xff0c 而不是等水开了之后再看报纸 xff0c 多线程是为了同步完成多项任务
  • 普通类和抽象类的区别和联系

    包含抽象方法的类称为抽象类 xff0c 但并不意味着抽象类中只能有抽象方法 xff0c 它和普通类一样 xff0c 同样可以拥有成员变量和普通的成员方法 注意 xff0c 抽象类和普通类的主要有三点区别 xff1a 1 抽象方法必须为pub