Java——抽象类和接口

目录

1.抽象类

1.概念:

2.语法 

3.特性 

2.接口  

1.概念

2.语法 

3.特性 


1.抽象类

1.概念:

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

在这我们拿动物来举例 

这里的Animal是父类,但由于Animal不是一个具体的动物,所以bark()无法具体实现

Dog类与Cat类与Animal都是继承关系且是具体的动物,因此可以实现“汪汪汪”与"喵喵喵"

因此我们可以把Animal类设计为"抽象类"

像这种没有实际工作的方法, 我们可以把它设计成一个抽象方法(abstract method), 包含抽象方法的类我们称为抽象类(abstract class)

2.语法 

在Java中,一个类如果被abstract关键字修饰称为抽象类,抽象类中被abstract修饰的方法称为抽象方法,抽象方法不用给出具体的实现体

abstract class shape{abstract public void draw();abstract void calcArea();//抽象类也是类,也可以增加普通方法和属性public double getArea(){return area;}protected double area;//面积
}

3.特性 

1.抽象类不能直接实例化对象

2.抽象方法不能是private 

3.抽象方法不能被final和static修饰,因为抽象方法要被子类重写

4.抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须使用abstract修饰 

5.抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类

6.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

2.接口  

1.概念

在生活中我们可以看到很多接口如电脑的USB口,电源的插口......

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。

在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型

2.语法 

接口的定义格式与定义类的格式基本相同,将class关键字换成interface关键字,就定义了一个接口

interface IShape {void draw();
}
class Rect implements IShape {@Overridepublic void draw() {System.out.println("画一个矩形!");}
}
class Triangle implements IShape {@Overridepublic void draw() {System.out.println("画一个三角形!");}
}public class Test4 {public static void drawMap(IShape iShape) {iShape.draw();}public static void main(String[] args) {//IShape iShape = new IShape();drawMap(new Rect());//画一个矩形!drawMap(new Triangle());//画一个三角形!}
}

注: 

1. 创建接口时, 接口的命名一般以大写字母 I 开头.

2. 接口的命名一般使用 "形容词" 词性的单词.

3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性 

3.特性 

1.接口的定义可以使用interface定义

2.接口当中的成员变量默认为public static final修饰的,定义的时候必须初始化

3.接口当中的方法默认是public abstract修饰的,你不写的时候也是抽象方法,所以不能有具体的实现

4.接口当中使用default修饰的方法和static修饰的方法是可以有具体的实现的!

5.接口不可以被实例化

6.接口需要被类实现,此时使用关键字implements来实现 class A implements IShape()

7.当一个类实现了一个接口,那么此时这个类就要重写这个方法

8.接口也可以发生向上转型,也可以发生动态绑定,也可以发生多态! 


如果上述内容对您有帮助,希望给个三连谢谢!

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

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

相关文章

ClickHouse部署安装

准备工作 确定防火墙处于关闭状态 CentOS取消打开文件数限制 在hadoop102的 /etc/security/limits.conf文件的末尾加入以下内容 注意:以下操作会修改 Linux 系统配置,如果操作不当可能导致虚拟机无法启动,建议在执行以下操作之前给…

sentinel中StatisticSlot数据采集的原理

StatisticSlot数据采集的原理 时间窗口 固定窗口 在固定的时间窗口内,可以允许固定数量的请求进入;超过数量就拒绝或者排队,等下一个时间段进入, 如下图 时间窗长度划分为1秒 单个时间窗的请求阈值为3 上述存在一个问题, 假如9:18:04:…

2024年C语言最新经典面试题汇总(11-20)

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…

【LLM多模态】Cogvlm图生文模型结构和训练流程

note Cogvlm的亮点: 当前主流的浅层对齐方法不佳在于视觉和语言信息之间缺乏深度融合,而cogvlm在attention和FFN layers引入一个可训练的视觉专家模块,将图像特征与文本特征分别处理,并在每一层中使用新的QKV矩阵和MLP层。通过引…

【小黑子szy】去除重复数字(集合set)

题目描述 给你N个数(n<=100),每个数都在(0~1000)之间,其中由很多重复的数字,请将重复的数字只保留一个,并将剩下的数由小到大排序并输…

Spring Boot的静态资源自动配置原理

当一个Spring Boot应用程序启动时,它会自动配置一个默认的ResourceHandlerRegistry,用于处理静态资源的映射和访问。这个ResourceHandlerRegistry会扫描特定的目录,比如/META-INF/resources、/resources、/static和/public,并将这…

01. 如何配置ESP32环境?如何开发ESP32?

0. 前言 此文章收录于《ESP32学习笔记》专栏,此专栏会结合实际项目记录作者学习ESP32的过程,争取每篇文章能够将细节讲明白,会应用。 1. 安装IDE:Thonny 后续项目中我们都是使用pythont语言,而thonny工具能很好的支撑E…

DFT应用:频谱分辨率和频率估计

目录 一、什么是频谱分辨率 1. 关于矩形窗函数 2. 分析余弦信号频谱 3. 频谱分辨率的定义 4. 如何提高频谱分辨率 二、关于频率估计 一、什么是频谱分辨率 1. 关于矩形窗函数 当k1时,主瓣宽度就是2x,能量主要集中在主瓣部分,频谱泄露…

VUE3状态管理库:Pinia的安装与使用

一、简介 Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。 二、安装 npm install pinia 在main.js中创建实例 import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const a…

【C语言数据结构】排序

1.排序的概念 在深入研究各个排序算法之前,首先,我们要对排序有个大概的了解,即与排序相关的一些概念 Q:什么是排序? A:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小…

mybatis-插件使用手册

mybatis-插件详解 基本原理 使用了JDK动态代理&#xff0c;基于 interceptor 实现 public class Plugin implements InvocationHandler {private final Object target;private final Interceptor interceptor;private final Map<Class<?>, Set<Method>> …

如何实现跨标签页通讯

什么是跨标签页通讯 同一浏览器&#xff0c;可以打开多个标签页&#xff0c;跨标签页通讯就是&#xff0c;一个标签页能够发消息给另一标签页。 有哪些实现方案 localStorage &#xff08;window.onstorage事件监听&#xff09;BroadcastChannel&#xff08;广播&#xff09…

【积累】list

List 一个list转为二维数组&#xff0c;五个一组 List<List<String>> lists Lists.partition(list,5);删除list中的元素 删除下标以及定位到遍历的位置 for(int i 0, len list.size(); i < len; i){ if(list.get(i) 1){ list.remove(i); len--;i--;} …

C语言经典算法-9

文章目录 其他经典例题跳转链接46.稀疏矩阵47.多维矩阵转一维矩阵48.上三角、下三角、对称矩阵49.奇数魔方阵50.4N 魔方阵51.2(2N1) 魔方阵 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&#xff09;6.…

pytest框架的封装以及用例管理框架

pytest框架的封装以及用例管理框架 公共类统一封装requests_util02.pytest_api01.py 自动化测试的基础自动化测试的介入点自动化测试和手工测试占比自动化实施过程 pytest元素定位元素定位查找元素定位的方式通过 ID 定位通过 Name 定位通过 Class Name 定位通过 Tag Name 定位…

唯众物联网安装调试员实训平台物联网一体化教学实训室项目交付山东技师学院

近日&#xff0c;山东技师学院物联网安装调试员实训平台及物联网一体化教学实训室采购项目已顺利完成交付并投入使用&#xff0c;标志着学院在物联网技术教学与实践应用方面迈出了坚实的一步。 山东技师学院作为国内知名的技师培养摇篮&#xff0c;一直以来致力于为社会培养高…

windows11 openssh服务开启;第三方ping不通局域网windows电脑;ssh连接内部ubuntu系统

参考&#xff1a;https://blog.csdn.net/2301_77554343/article/details/134328867 1、windows11 openssh开启 1&#xff09;我这边可选功能在设置-系统里面&#xff1b;其他网上看在应用下&#xff1b;添加可选openssh服务器安装 2&#xff09;安装后打开&#xff0c;管理员…

光伏户用开发技巧

一、开发户用光伏的技巧有哪些&#xff1f; 1.项目可行性分析 电站开发前需要先进行可行性分析&#xff0c;从当地的气象条件、电网的接入能力、政策环境等方便分析。可以自行收集数据分析&#xff0c;也可以邀请专业机构进行评估。 2.选址和电站设计 光伏电站的选址&#…

agent利用知识来做规划:《KnowAgent: Knowledge-Augmented Planning for LLM-Based Agents》笔记

文章目录 简介KnowAgent思路准备知识Action Knowledge的定义Planning Path Generation with Action KnowledgePlanning Path Refinement via Knowledgeable Self-LearningKnowAgent的实验结果 总结参考资料 简介 《KnowAgent: Knowledge-Augmented Planning for LLM-Based Age…

Leetcode 3093. Longest Common Suffix Queries

Leetcode 3093. Longest Common Suffix Queries 1. 解题思路2. 代码实现 题目链接&#xff1a;3093. Longest Common Suffix Queries 1. 解题思路 这一题的话思路上其实就是一个Trie树的变体。 对于每一个wordsQuery当中的word&#xff0c;我们要在wordsContainer当中获取答…