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

news2024/11/18 17:41:10

目录

 

一. 抽象类

        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.coloradmin.cn/o/1687551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache无法确定服务器的完全合格域名(FQDN)报错解决方法

文章目录 一、apache语法检查报错二、报错原因分析三、报错解决办法 一、apache语法检查报错 当我们在进行apache配置时,需要检查配置是否存在语法错误: sudo apache2ctl configtestAH00558: apache2: Could not reliably determine the servers fully…

图解CPU、内存、硬盘的工作原理

1、简要概括 硬件作用cpu 负责执行计算机程序的指令内存用于临时存储程序和数据。硬盘将数据从硬盘读取到内存或将数据从内存写入硬盘的过程。联系三者协同工作,CPU执行程序指令,将需要的数据从硬盘读取到内存,进行计算后再将结果写回内存或…

JDBC访问数据库

JDBC学习笔记代码jar包等连接 链接:https://pan.baidu.com/s/1NqgMucUk7JjoSZXEkA-PPQ?pwd60kv 提取码:60kv –来自百度网盘超级会员V3的分享 下载驱动 不管是连接mysql还是sqlserver都需要Java的一个驱动包,及XXX.jar包,这个包…

扩散模型学习1

DDPM 总体训练原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 讲得很好:每次都是输入t和noise-x的图像,预测noise之后得到和加入的noise比较&#xff1b…

如何搭建springBoot项目中的全局异常处理和自定义异常处理

目录 1 什么是异常 2 异常的种类 3 解决异常的方式 4 全局异常处理器和自定义异常处理器 5 测试异常处理 1 什么是异常 异常(Exception)是在程序执行过程中出现的一种特殊情况或错误。它可以是由于程序逻辑错误、运行环境问题、用户输入错误等原因…

Unity中计数器的实现

Unity中计数器的实现 一、前言二、效果与逻辑(一) 实现效果(二)功能逻辑 三、功能代码四、应用实现五、结语 一、前言 最近在开发中用到计数器,但是unity自带的UI组件中没有,所以只好自己手撸了一个&#x…

亚马逊云科技介绍

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、亚马逊云科技云计算1.1 云计算的优势 二、领先的云平台三、亚马逊云科技区域的全球网络…

1Panel应用推荐:code-server

1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…

Redis常见数据类型(3)-String, Hash

目录 String 命令小结 内部编码 典型的使用场景 缓存功能 计数功能 共享会话 手机验证码 Hash 哈希 命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat String 上一篇中介绍了了String里的基本命令, 接下来总结一…

XV4001系列陀螺仪传感器广泛用于车载导航系统

随着汽车电子化趋势的加速,越来越多的汽车配备一系列先进的车载导航系统,这些导航系统功能的实现都依赖于精确的传感器数据(位置、车速、转向角度、车轮转速等)。传感器作为这些系统的核心组件,其准确性和可靠性直接影响到整个导航系统的性能…

OSPF问题

.ospf 选路 域内 --- 1类,2类LSA 域间 --- 3类LSA 域外 --- 5类,7类LSA --- 根据开销值的计算规则不同,还分为类型1和类型2 ospf 防环机制 区域内防环:在同一OSPF区域内,所有路由器通过交换链路状态通告&#xff…

鸿蒙原生应用元服务开发-鸿蒙真机运行项目实战与注意事项

一、解压项目注意项目包不能为中文 二、用数据线将装好DevEco Studio的电脑与设置为开发者模式的鸿蒙手机相连接。 三、将项目包托进DevEco Studio 中 注意项目包文件不能有嵌套 四、查看设备运行 五、点击项目结构 六、勾选红色框圈部分 登录开发者账号 七、选择好公司 八、等…

2024年人文艺术与创新教育国际学术会议(ICHAIE 2024)

2024年人文艺术与创新教育国际学术会议(ICHAIE 2024) 2024 International Conference on Humanities, Arts and Innovation Education 一、【会议简介】 随着全球化的推进和科技的迅猛发展,人文艺术与创新教育在培养未来人才方面扮演着越来越重要的角色…

Django继承User表实现注册和登录

Django继承User表实现注册和登录 django中已经有了user表,这篇文章将为大家详细讲解有关Django如何继承自带user表并重写。 一、后端部分 1、引入AbstractUser并继承 (1)、引入 from django.contrib.auth.models import AbstractUser**&…

【设计模式深度剖析】【1】【结构型】【代理模式】| 玩游戏打怪、升级为例加深理解

👈️上一篇:创建型设计模式对比 | 下一篇:装饰器模式👉️ 目 录 代理模式定义英文原话直译如何理解? 3个角色UML类图1. 抽象主题(Subject)角色2. 代理类:代理主题(Proxy Subject&#xff0…

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

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

leetcode437 路径总和III-哈希表+前缀和

题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节…

nginx开启资源目录

nginx开启资源目录表 可访问开放资源目录下的任何文件以及视频,图片等。可以作为一个妥妥的线上网盘资源托管空间使用。 上一篇文档揭示了nginx的神秘面纱,初步介绍与启动了nginx的基本功能和使用前端nginx学习配置开发验证,对各种配置已经…

Flutter容器

内边距padding class MyBody extends StatelessWidget {overrideWidget build(BuildContext context) {return Container(//为了可以看出内边距,将容器设置成红色color: Colors.red,child: Padding(padding: EdgeInsets.all(15),child: MyImage(https://raw.github…

SpheroGPT: 声控自然语言编程 AI 玩具 Demo 具身智能 图文解说 完全开源机器人

背景介绍 因为生病请了长假. 一周前状态开始恢复, 于是尝试用 LLM (ChatGPT3.5) + Sphero 开发一个可以声控自然语言编程的 AI 玩具, 作为学习 ChatGPT 应用开发的方法. 差不多十天时间把开发目标基本都实现了, 这里和大家分享一下心得体会. Demo 示例视频 先把录制的几个 d…