---java 抽象类 和 接口---

抽象类

再面向对对象的语言中,所以的对象都是通过类来描述的,但如果这个类无法准确的描述对象的

话,那么就可以把这个类设置为抽象类。

实例

这里用到abstract修饰,表示这个类或方法是抽象方法

因为会重写motifs里的show方法,所以无论里面写什么都不会被执行,那么就把他写成抽象方法

然后再子类中重写她,可以说抽象类就是用来被继承的,而抽线方法就是用来被重写的

要注意的是,抽象类中可以有普通方法和成员变量,甚至类里面都可以没有抽象方法

但是如果里面有一个抽象方法,那么就必须要把这个类用abstra修饰

当之类继承了抽线父类之后,子类还必须要重写父类的抽象方法,若不想重写抽象方法,那么这个子类也是抽象类

但如果你不想要在这个类中重写这个方法,那可以也把这个类也设置成抽象类,只不过当别人要继承这个类,需要重写这个类和这个类的父类的所有抽象方法

抽象方法是用来被重写的,所以不能有final static  private修饰

且抽象类不能被实例化

要是用的话必须要实例化子类,然后通过向上转型来使用

抽象类作用

抽象了本身不能被实例化,只能通过实例化子类,然后向上转型重写父类的抽象方法才能使用

这样就多了一层编译器的校验,因为你不有些工作是不该父类去完成的,那么你把它写成抽象方法,这样就确保这是子类去完成的任务

接口

生活中常见的usb接口,当我们要传输数据时,可以使用usb插头插入usb接口中然后进行各种操作,而这个usb接口就相当于是一个规范,你要通过usb接口进行数据的传输,就必须要有usb接口,而如果你设备有usb插头,不管是什么设备,相机,电视,电脑还是什么的,都能插入usb插头进行操作,而java中的接口也是这样,接口是公共行为的规范,再大家实现是你只需要符合规范

(有usb插头)那么你就可以使用这个接口(usb接口)

语法

接口的创建

和类的写法一样,只不过类使用class去修饰,而接口用interface去修饰

接口中的成员的权限都是public,且成员变量默认是由public final修饰

成员方法默认是由public abstract修饰

若要再接口中存在由方法体的成员方法,那么就要用static 或者 final修饰

接口的使用

需要用类去实现该接口,因为接口中有抽象成员

two这个类必须重写所有接口都有的抽象类(这里我把其他的抽象类都注释了)

调用

对于接口中存在的有方法体的方法的使用,只有用default修饰的能直接调用,而static的就需要用default去间接调用

没有static修饰的Show_5方法的存在

接口可以理解为更加抽象的抽象类,抽象类中可以允许构造方法,和非抽象成员方法的存在

而接口中只能是抽象方法,且成员都有固定的修饰(成员变量为 public final

成员方法为 public abstract)相比于抽象类,接口的好处是一个类可以使用多个接口, 

这样再实际使用时灵活性就更高了,而这样设计程序有个好处就是再具体使用时看以忘记对类型,

只需要关注对象是否具有某个功能(也就是使用了这个功能对应的接口)

接口件也能继承,用extends关键字,之后再使用接口是需要把继承的接口的抽象类也要重写

下篇介绍几个实际接口

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

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

相关文章

【爬虫实战项目一】Python爬取豆瓣电影榜单数据

目录 一、环境准备 二、编写代码 2.1 分页分析 2.2 编码 一、环境准备 安装requests和lxml pip install requests pip install lxml 二、编写代码 2.1 分页分析 编写代码前我们先看看榜单的url 我们假如要爬取五页的数据,那么五个url分别是: htt…

再读高考作文题

新课标I卷:讨论了随着互联网和人工智能的普及,问题是否会变得越来越少,要求考生写一篇文章,表达自己对于这一现象的联想和思考。 从来就没有什么救世主 AI也不是​​​​​ 一直不会写作文,直到高中,才堪堪…

Java Web学习笔记30——打包部署

打包: 到资源管理器中再看下: 将这些文件压缩成一个zip文件,然后到nginx的html目录中执行unzip 解压即可。 部署: Nginx:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代…

使用JMeter软件压测接口配置说明

1、下载完该软件https://blog.csdn.net/wust_lh/article/details/86095924 2.点击bin文件中jmeter.bat脚本https://blog.csdn.net/wust_lh/article/details/86095924 3.官网地址https://jmeter.apache.org/download_jmeter.cgi 通过 【Options】->【Choose Language】变更为…

双列集合底层源码

tips: 竖着的箭头:重写 横着的箭头:继承

张大哥笔记:经济下行,这5大行业反而越来越好

现在人们由于生活压力大,于是就干脆降低自己的欲望,只要不是必需品就不买了,自然而然消费也就降低了,消费降级未必是不好的现象! 人的生物本能是趋利避害,追求更好的生存和发展空间,回避对自己有…

在线渲染3d怎么用?3d快速渲染步骤设置

在线渲染3D模型是一种高效的技术,它允许艺术家和设计师通过互联网访问远程服务器的强大计算能力,从而加速渲染过程。无论是复杂的场景还是高质量的视觉效果,在线渲染服务都能帮助您节省宝贵的时间。 在线渲染3D一般选择的是:云渲染…

生成式人工智能 - 本地windows 11 + PyCharm运行stable diffusion流程简述

一、环境说明 硬件:本地电脑windows11、32.0 GB内存、2060的6G的卡。 软件:本地有一个python环境,主要是torch 2.2.2+cu118 二、准备工作 1、下载模型 https://huggingface.co/CompVishttps://huggingface.co/CompVis 进入上面的网址,我这里下载的是这个里面的 …

雷电模拟器中控实现,直通源码

目录 前言 开发 需求 初始环境 UI搭建 功能实现 前言 本篇为易语言雷电模拟器中控项目实现操作,一般用于:脚本开发多线程模拟操作等起始模板框架,使用易语言原因为其前后端一体化,对于脚本开发而言更为方便。 开发 需求 以…

C语言详解(联合和枚举)

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥个人主页:奋斗的小羊 💥所属专栏:C语言 🚀本系列文章为个人学习笔记,在这里撰写…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址:https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点: 1,背景: 1)灵感来源:于Kolmogorov-Arnold表示定理,也就是多变量连续函数可以表…

【人工智能】第七部分:ChatGPT的未来展望

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

LeetCode | 1624.两个相同字符之间的最长子字符串

这道题拿到手想法就是去双重遍历暴力解,对于每个字符,从后往前遍历字符串,找到从后往前一直到本次遍历的这个字符串这段子串中和这个字符串相同的字符位置,然后得到子字符串的长度,和ans存储的值做一个比较&#xff0c…

副业赚钱:10个简单创意,轻松实现财务自由

嗨,我是兰若姐姐,我是从4月26号开始日更博客的,之前一直分享的是技术文档,但是在这个过程中,我发现这些文档只是解决了某一个人当下遇到的某个具体问题,但是对于他升值加薪没有任何帮助,所以我中…

Linux入门学习(2)

1.相关复习新的指令学习 (1)我们需要自己创建一个用户,这个用户前期可以是一个root用户,后期使用创建的普通用户 (2)文件等于文件内容加上文件属性,对于文件的操作就包括对于文件内容的操作和文件属性&…

论文Compiler Technologies in Deep Learning Co-Design: A Survey分享

目录 标题摘要引言背景深度学习软件和硬件的发展不同时期的协同设计深度学习协同设计系统神经网络架构设计和优化协同设计技术 用于协同设计的深度学习系统中的编译技术深度学习编译器TVM 生态系统和MLIR生态系统IR转换和优化代码生成运行时和执行模式 Buddy-Compiler: 一个针对…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…

梯度提升决策树(GBDT)

GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,是一种迭代的决策树算法,又叫 MART(Multiple Additive Regression Tree),它通过构造一组弱的学习器(树&am…

Valgo,类型安全,表达能⼒强的go验证器

valgo 是一个为 Go 语言设计的类型安全、表达性强且可扩展的验证库。该库的特点包括: github.com/cohesivestack/valgo 类型安全:利用 Go 语言的泛型特性(从 Go 1.18 版本开始支持),确保验证逻辑的类型安全。表达性&a…

关于Stream.toList()方法使用小记

对照示例 public static void main(String[] args) {final List<String> list new ArrayList<>();list.add("aa");list.add("bb");list.add("cc");list.remove("cc");System.out.println(list);}结果&#xff1a; Stre…