[JAVASE] 类和对象(五) -- 抽象类和接口

目录

 

一. 抽象类

        1.1 抽象类的定义

        1.2 抽象类的实现

        1.3 抽象类的作用 

        1.4 抽象类注意事项 

二. 接口 

        2.1 接口的定义

         2.2 接口的实现

        2.3 接口的作用

        2.4 接口注意事项 

三. 总结 


 

一. 抽象类

        1.1 抽象类的定义

如果一个类中没有包含足够的信息来描绘一个具体的对象, 那么这个类就可以被定义为抽象类. (其实就是父类)

        1.2 抽象类的实现

使用 abstract 关键字 来修饰抽象类, 以及抽象方法.

1e9b3624d0d84903a5394850e9d5c4c9.png

        1.3 抽象类的作用 

a.

抽象类就是用来检查父类中的抽象方法有没有在子类中被重写.

17f1a9957d3c4e1e98e21a82c858fc0c.png

(很多语法的出现就是用来提前发现问题的)

b.

抽象类 就是为了被继承的.

c.

抽象方法 就是为了被重写的.

        1.4 抽象类的注意事项 

a. 

如果一个类是抽象类, 可以不必在抽象类中 实现 抽象方法.

但是,如果一个类中存在抽象方法, 那么, 这个类 必须被定义为抽象类.

b.

在抽象父类中实现了抽象方法, 那么在它的普通子类中必须重写抽象方法, 在它的抽象子类中不必重写抽象方法.

c. 

抽象类不能够被实例化(因为抽象类不能够描述一个具体的对象)

d18743536a2d423ea78550064dac9dac.png

d. 

抽象方法需要满足重写的要求.

(抽象方法不能被 static final private 修饰,

子类重写方法的访问权限 >= 父类重写方法的访问权限)

e.

abstract 与 final 是不能共存的.

(final 修饰的类是密封类, 不能够再被其他类继承.  abstract 修饰的抽象类就是用来被继承的.

final 修饰的方法是密封方法, 是不可变的, 不能够被重写. abstract 修饰的密封方法就是用来被重写的.)

23aad2c83488407ab1cd37b6970337bc.png

f.

在抽象类中可以实现 普通成员变量 和 普通成员方法 以及 构造方法(因为存在普通成员变量).

d045d90504a54ad498c7aa2d29f80422.png


二. 接口 

        2.1 接口的定义

接口是多个类的公共行为规范.

接口的含义是: ... 具有...的特性.

         2.2 接口的实现

a.

使用 interface 关键字来修饰接口.

5282e09afc514e4aad63231465d52083.png

b. 

使用 implements 来实现接口

50d5e60d6aaa4d089c093a3a816e7379.png

 

        2.3 接口的作用

解决了 JAVA 中不能够 多继承(一个子类继承多个父类) 的问题.

e9ccccbef9cf4d8d91a2a27f4fb19dd3.png

        2.4 接口的注意事项 

a.

接口中的属性 默认被 public static final 修饰.(属于类的静态常量) 

d973ccf933bf45cc821ad1e79b3b62fc.png

(以上5种方式定义的属性, 都是被public static final 修饰)

b.

接口中的成员方法 默认被 public abstract 修饰.

5697a078c87e476692104e640c5a5bdc.png

c.

接口中可以实现 非抽象方法(有具体实现的方法), 但是必须被 static 或者 default 修饰.

941edd198eba438cac1c6a78c7941d7d.png

d.

接口中不能够 有 构造方法.(因为接口中 的属性都是 静态常量, 根本就不需要调用构造方法来进行初始化)

a15918f009ba4b17b35df12c124aa21e.png

e.

接口不能够被实例化.

(因为在接口中不允许实现构造方法, 所以无法实例化对象

其次, 接口本质上也是抽象的, 不能够被实例化).

1e5a505099b84975b54dd198cc8cb93d.png

f.

接口之间可以进行合并.(使用 extends 关键字来实现)

b49e138919684d3d871c110849748cbe.png


三. 总结 

a. 抽象类就是用来 观察父类中的抽象方法 有没有 在子类中被重写.

b. 抽象类的注意事项是 重点.(需要经常回顾)

c. 接口 的含义是: ...具有...的特性.

d. 接口解决了 java 中不能够多继承的问题.

e. 接口的注意事项也是重点(需要经常回顾)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/329948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP 请求的完整过程

HTTP 请求的完整过程 当用户在浏览器输入网址回车之后,网络协议都做了哪些工作呢? 首先工作的是 浏览器应用程序,他要解析出 URL中的域名 根据域名获取对应的ip地址,首先从浏览器缓存中査看,如下可以査看浏览器中域名对应ip的解…

拆分盘投资深度解析:投资逻辑、风险探讨与投资建议

随着互联网技术的飞速发展,金融领域也迎来了诸多创新。其中,拆分盘作为一种新型投资模式,以其独特的“只涨不跌”机制,吸引了众多投资者的目光。本文将深入探讨拆分盘的投资逻辑,并通过一个实际案例进行解析&#xff0…

Funkey游戏机新作,基于全志T113的全新版本

不同于配置高端、性能强劲的Windows、安卓掌机,有一部分的爱好者往往对拥有复古外形的开源掌机更加感兴趣。作为开源掌机的热门产品,小巧便携的FunKeys掌机是各位开源爱好者争相复刻的对象。因热爱开源掌机DIY而聚集的“双核掌机开发组”开发者团队&…

xxe漏洞--xml外部实体注入漏洞

1.xxe漏洞介绍 XXE(XML External Entity Injection)是一种攻击技术,它允许攻击者注入恶意的外部实体到XML文档中。如果应用程序处理XML输入时未正确配置,攻击者可以利用这个漏洞访问受影响系统上的敏感文件、执行远程代码、探测内…

计算机毕业设计 | springboot药品库存追踪与管理系统 药店管理(附源码)

1,绪论 1.1 背景调研 如今药品调价频繁,且品种繁多,增加了药品销售定价的难度。药品来货验收登记中的审查有效期环节容易出错,错收过期或有效期不足的药品。 手工模式下的药品库存难以及时掌握,虽然采取了每日进行缺…

介绍Votenet的网络结构

Votenet是一种用于3D对象检测的深度学习网络,其网络结构主要由两个部分组成:Vote网络和Objectness网络。 Vote网络被设计用于从点云数据中生成候选3D边界框。它由三个主要的模块组成:1)共享MLP层,用于提取点云中每个点…

Spark累加器

1. 累加器 累加器:分布式共享只写变量 考虑如下计算RDD中数据的和: val rdd sc.makeRDD(List(1, 2, 3, 4))var sum 0 rdd.foreach(num > {sum num} )println("sum " sum) 预期结果10,但其实不是 foreach里面的函数是在…

揭秘未来,开启盲盒新篇章——打造你的专属盲盒小程序

一、引言 在这个充满未知与惊喜的时代,盲盒文化已经深入人心,成为年轻人追求新奇、体验刺激的新宠。如今,随着科技的快速发展,盲盒文化也迎来了全新的发展机遇。我们诚挚地邀请您一同踏上这场盲盒小程序开发的旅程,共…

查询一个字符串在另一个字符串中出现的次数(java)

查询一个字符串在另一个字符串中出现的次数 例: String str1“helloworld,java,python,hellokafka,world big table helloteacher”; String str2“hello”; 字符串str2在str1中出现3次 代码 package exercise.test8;public class Demo8 {public static void mai…

VLAN---虚拟局域网

通过在交换机上部署VLAN技术,将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域。 IEEE 802.1Q标准----虚拟桥接局域网标准----Dot1Q标准 VLAN-ID:标定该数据帧所属的VLAN ID信息 PC1发送的是一个无标记帧(传统的以太网…

Google Earth Engine(GEE)深度学习入门教程-Python数据读入篇

Python数据读入篇 前置条件: GEE预处理影像导出保存为tfrecord的数据包,并下载到本地tensorflow的深度学习环境 本篇文章的目的主要是把Tfrecord格式的数据加载为tf可使用的数据集格式 设定超参数 首先需要设定导出时的波段名称和数据格式&#xff…

Spring Security实现用户认证三:结合MySql数据库对用户进行认证

Spring Security实现用户认证三:结合MySql数据库对用户进行认证 1 原理2 基于内存的认证(默认方式)2.1 依赖2.2 WebSecurityConfig配置类添加配置 3 为下一步准备数据源3.1 依赖3.2 创建表users和authorities3.3 配置DruidDataSource数据源3.…

KDE-Ambari-Metrics-Collector问题排查解决手册

文档说明 本文档是为了解决KDE平台的Ambari-Metrics-Collector服务在运行时遇到的问题而提供的问题排查和解决方法的参考文档 说明: 当前的Ambari-Metrics-Collector服务包括了ams-collector和ams-hbase两个程序,在Ambari-Metrics-Collector安装的节点执行ps -elf|grep am…

【热门话题】一文带你读懂公司是如何知道张三在脉脉上发了“一句话”的

按理说呢,A公司和脉脉属于不同的平台,而且脉脉上大家可以匿名发言,所以,即便我坐在你边上,我发了一句话上去,你也不知道是谁发的。但通过一些技术,我们却可以分析出,公司是如何知道张…

2024 电工杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解…

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情&#xff0c;如何批量爬取下来呢&#xff1f; 先找到每集的链接地址&#xff0c;都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 这个…

玩转OpenHarmony PID:教你打造两轮平衡车

简介 此次为大家带来的是OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;系统与PID控制算法相结合并落地的平衡车项目。 PID控制算法是一种经典的&#xff0c;并被广泛应用在控制领域的算法。类似于这种&#xff1a;需要将某一个物理量保持稳定的场合&…

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台&#xff0c;我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型&#xff08;LLM&#xff09;、智能体&#xff08;Agent&#xff09;、知识库、向量数据库、知识图谱&#xff0c;RAG&#xff0c;AGI 的不同形态愈发显现&#xff0c;如何…

Redis系统架构中各个处理模块是干什么的?no.19

Redis 系统架构 通过前面的学习&#xff0c;相信你已经掌握了 Redis 的原理、数据类型及访问协议等内容。本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis…

分布式限流总结

1、计数器 java内部可以使用原子计数器AtomicInteger\Semaphore信号量来做简单的限流 // 限流的个数private int maxCount 10;// 指定的时间内private long interval 60;// 原子类计数器private AtomicInteger atomicInteger new AtomicInteger(0);// 起始时间private lon…