Java#21(抽象与接口)

news2024/11/25 18:43:01

目录

一.抽象方法和抽象类

1.抽象方法:

2.抽象类:

3.注意:

二.接口

1.接口的定义

2.注意

3.接口中成员的特点

三.接口中的方法

1.JDK7以前: 接口中只能定义抽象方法2.JDK8: 接口中可以定义有方法体的方法(默认、静态)

3.JDK9: 接口中可以定义私有方法


一.抽象方法和抽象类

1.抽象方法:

将共性的行为 (方法) 抽取到父类之后由于每一个子类执行的内容是不一样的,所以在父类中不能确定具体的方法体该方法就可以定义为抽象方法

2.抽象类:

如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象方法的格式:public abstract 返回类型 方法名(参数列表);

抽象类的格式:public abstract class 类名{ }

3.注意:

(1)抽象类不能实例化(创建对象)
(2)抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
(3)可以有构造方法
(4)抽象类的子类
    要么重写抽象类中的所有抽象方法(常用)
    要么是抽象类

 

二.接口

1.接口的定义

(1)接口用关键字interface来定义
格式: public interface 接口名 { }
(2)接口不能实例化
(3)接口和类之间是实现关系,通过implements关键字表示public class 类名 implements 接口名{ }
(4)接口的子类(实现类)
    要么重写接口中的所有抽象方法
    要么是抽象类

2.注意

1.接口和类的实现关系,可以单实现,也可以多实现
public class 类名 implements 接口名1, 接口名2{ }

2.实现类还可以在继承一个类的同时实现多个接口
public class 类名 extends 父类implements 接口名1, 接口名2{ } 

 

3.接口中成员的特点

(1)成员变量
    只能是常量
    默认修饰符: public static final

(2)构造方法
    没有
(3)成员方法
    只能是抽象方法(jdk7之前)
    默认修饰符: public abstract 

 

三.接口中的方法

1.JDK7以前: 接口中只能定义抽象方法
2.JDK8: 接口中可以定义有方法体的方法(默认、静态)

允许在接口中定义默认方法,需要使用关键字 default 修饰作用: 解决接口升级的问题
格式:public default 返回值类型 方法名(参数列表){ }
范例: public default void show(){ }
注意:
(1)默认方法不是抽象方法,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字
(2)public可以省略,default不能省略

允许在接口中定义定义静态方法,需要用static修饰
格式: public
static 返回值类型 方法名(参数列表){ }

范例: public static void show(){ }
注意:
(1)静态方法只能通过接口名调用,不能通过实现类名或者对象名调用

(2)public可以省略,static不能省略

3.JDK9: 接口中可以定义私有方法

格式1:private 返回值类型 方法名(参数列表){ }

范例1: private void show(){ }
格式2: private static 返回值类型 方法名(参数列表){ }

范例2: private static void method(){ }

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

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

相关文章

【Call for papers】DSN-2023(CCF-B/截稿日期: 2022年12月7日)

文章目录1.会议信息2.时间节点3.论文主题On behalf of the Organizing Committee, we extend you a warm welcome to the 53rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2023), organized by the University of Coimbra, Portugal.…

[ Linux ] 如何查看Linux系统版本

文章目录查看Linux内核Kernel的场景情况查看 Linux 版本的几种方式1、通过查看 redhat-release (可查看小版本)2、使用 lsb_release 命令 (可查看小版本)3、使用 hostnamectl 命令 (只可查看大版本)4、通过…

使用NNO区域进行色偏检测

想做图像的色偏检测,网上的资料全是同一套代码,就是2013年那个计算等价圆,然后直接用D-r>9 and K>0.6) or K>1.5,判断的代码(相信大家都查到过了) 但是色偏问题并不是这样简单的判断就可以的&…

一文掌握Python虚拟环境-提升你的开发效率

在真正开始Python代码编写、编译、运行、调试和开发项目之前,必须要了解下Python的虚拟环境的配置,熟悉使用后,会大大提升后续的开发效率,减少非代码原因导致的问题。virtualenv就是Python中的Virtual Environment-虚拟环境。本文…

C#界面里Form.HelpButton 属性的使用

C#界面里Form.HelpButton 属性的使用 Form.HelpButton 属性是获取或设置一个值,该值指示是否应在窗体的标题框中显示“帮助”按钮。 在一般的开发中,很少有人使用这个属性,因为程序比较简单,只要用户一上手就可以使用了。 如果界面比较复杂,或者说功能比较多,就需要使…

04【MyBatis的类型处理器】

四、MyBatis的类型处理器 4.1 typeAliases别名配置 类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类。 我们仔细观察mapper.xml配置文件,会发现不管是入参(paramterType)还是出参(ResultType&#…

大数据面试题(三):MapReduce核心高频面试题

文章目录 MapReduce核心高频面试题 一、ReduceTask工作机制 二、请描述mapReduce有几种排序及排序发生的阶段? 1、排序的分类 2、自定义排序WritableComparable 3、排序发生的阶段 三、请描述mapReduce中shuffle阶段的工作流程,如何优化shuffle阶…

Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、平滑翻书效果 与纸质书籍类似,手机上的电子书也有很多页,逐页浏览可采用翻页视图,然而翻页视图犹如一幅从左到右的绵长画卷,与现实生活中上下层叠的书籍并不相像,…

百度paddle框架 目标检测

random recording 随心记录 What seems to us as bitter trials are often blessings in disguise. 看起来对我们痛苦的试炼,常常是伪装起来的好运。 数据集准备 2183张图片,训练集1693张,验证集245,测试集245张。 包含7种昆虫&a…

数据挖掘算法原理与实践:k-均值

目录 第一关:什么是质心 任务描述: 相关知识: 什么是质心: 编程要求: 测试说明: 第二关:动手实现k-均值 任务描述: 相关知识: 一、数据集介绍 二、k-means算法…

基于PHP+MySQL医院管理系统的设计与开发

随着各种医疗条件的发展,人们在寻医就药的时候更希望通过信息化的方式进行挂号等一系列操作,为此各大医院也开发出了配套的医院管理系统,方便医生和患者就诊,本系统就是这样通过PHP和MySQL开发的系统 PHP:MySQL医院管理系统根据实际情况分为了管理员,医生和患者三部…

Ubuntu上安装部署k8s集群

Ubuntu上安装部署k8s集群一、基础环境准备(一)环境说明1.主机说明(二)环境操作1. 设置Master与工作节点的机器名称及配置2. 解析主机3. 写入以下内容(注意IP地址和主机名换成自己的):4. 虚拟内存swap分区关闭5. 开启防…

新零售时代下的实体门店步履维艰,实体门店应该如何起死回生吗?

传统实体店在新零售时代的下,大众的消费习惯早已经发生天翻地覆的变化,因而实体行业受到新型消费带来的冲击,再加上电商平台的迅速崛起与发展,实体门店更加是步履维艰。因此改变是必然,那么传统实体店想要转型走新零售…

万字深剖进程地址空间(全程干货)

目录前言一、程序地址空间1.程序地址空间的简图(1)正文代码(2)初始化数据(3)未初始化数据(4)堆区(5)共享区(6)栈区(7)命令行参数和环境变量2.实验:验证程序地址空间中各个区域的存在3.实验:验证堆区和栈区中地址的增长方向4.实验:如何理解sta…

算法设计与分析 SCAU17104 视频流有效调度

17104 视频流有效调度 时间限制:1000MS 代码长度限制:10KB 提交次数:25 通过次数:9 题型: 编程题 语言: G;GCC;VC;JAVA Description 现在n个视频流要在一条通信链路上一个接一个的传送。视频流i由bi位组成,这些位需要一个常数速率, 在ti秒内被发送。你…

lua-快速入门学习

lua-快速入门学习 安装 centos环境: yum install lua windows: window 下你可以使用一个叫 “SciTE” 的 IDE环 境来执行 lua 程序,下载地址为: Github 下载地址:https://github.com/rjpcomputing/luaforwindows/…

基于JavaSpringmvc+Vue+elementUI大学生求职招聘系统详细设计实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取联系🍅精彩专栏推荐订阅👇&#x1f…

前端开发技巧记录

1.取数组最后一位 let arr[1,2,3,4,5] console.log(arr[arr.length-1]) //5 console.log(arr.at(-1)) // 52.用??代替||,判空 ||运算符是左边是‘’ false 0 null undifined等,都会返回后侧的值。而??必须运算符左侧的值为null或undefined时&#x…

智能家居系统 QT

一 环境范围设置 &#xff08;1&#xff09;界面添加新控件 在mainwindow.ui 添加控件&#xff1a; 控件的类型 文本内容 对象名&#xff08;唯一&#xff09; 是否有槽函数 QLabel <温度< lable_随意 否 QLabel <湿度< lable_随意 否 QLabel <光…

CTF-misc练习(https://buuoj.cn)之第一页

一、金胖子 1.打开gif&#xff0c;看到有东西闪过&#xff0c;把gif分帧保存 2.就得到flag&#xff1a; 二、二维码 1.分析压缩包&#xff1a; 2.解压图片&#xff0c;分析图片&#xff0c;还有一个隐藏文件&#xff1a; 3.分离图片&#xff1a; 4.图片需要输入密码&#xff…