面向对象-接口

面向对象-接口

1. 接口的概念

​ 接口就是规范\规则,我们可以使用接口来定义一些规则(比如要求某个方法的方法名必须叫什么,方法的参数列表必须是什么,方法的返回值类型必须是什么)

​ 现实生活中的规范
在这里插入图片描述

2. 接口的格式

2.1 定义接口

​ 使用interface来定义接口

public interface 接口名{//定义抽象方法void method();
}

2.2 实现接口

​ 在要实现接口的类名后面加上implements 接口名。如果要实现多个接口,多个接口名用逗号分开。我们在理解的时候可以把接口理解成是一个特殊的父类。

 public class 类名 implements 接口名{}

3. 接口中的成员

3.1 常用成员

​ 在jdk7版本中接口中只能有常量和抽象方法。

​ 我们接口中定义不了成员变量。因为定义的成员变量默认都会修饰为:public static final

​ 我们在接口中定义的方法默认修饰符为public abstract

例子

public interface InterfaceA {//常量int NUM =10;//等价于public static final int NUM =10;//抽象方法void method();//等价于  public abstract void method();
}

3.2 新增成员

​ 在新版本的jdk中接口中允许出现更多的成员。

3.2.1 默认方法

​ 在jdk8中允许我们在接口中定义默认方法。默认方法允许有方法体。

​ 默认方法可以选择不进行重写。

3.2.1.1 格式

​ 使用defaut关键字进行修饰。

public interface InterfaceA {//默认方法default void method(){}
}
3.2.1.2 注意事项

​ 如果两个接口中有相同的默认方法。一个类同时实现了这两个接口,必须要重写该方法。

3.2.1.3 应用场景

​ 如果在接口升级的时候某些方法并不想让所有的实现类进行重写,可以使用默认方法来定义。

3.2.2 静态方法

​ 在jdk8中允许我们在接口中定义静态方法。静态方法允许有方法体。

​ 静态方法不能被重写。

3.2.2.1 格式

​ 使用static关键字进行修饰。

public interface InterfaceA {//静态方法static void staticMethod(){}
}public class Demo {public static void main(String[] args) {//使用接口名.方法名(参数)  来调用InterfaceA.staticMethod();}
}
3.2.2.2 应用场景

​ 如果在接口升级的时候需要给接口增加一些工具方法。不想让实现类去重写该方法,可以使用静态方法来定义。

3.2.3 私有方法

​ 在jdk9中允许我们在接口中定义私有方法。私有方法允许有方法体。

​ 私有方法不可以被重写。

3.2.3.1 格式

​ 使用private进行修饰。

public interface InterfaceA {private static void privateStaticMethod(){}private  void privateMethod(){}
}
3.2.3.2 应用场景

​ 对默认方法或者是静态方法中重复的代码进行抽取,提高代码复用度。

4. 继承实现关系

​ 在java中一个类可以实现多个接口

例如

 public class Person implements InterfaceA,InterfaceB{}

​ 在java中接口和接口之间可以有继承关系。继承之后会把父接口的成员继承下来。

public interface InterfaceC  extends InterfaceA{
//    void method1();
}

5. 抽象类和接口的使用区别

​ 接口中的基本都是抽象的,而在抽象类中可以有一部分是非抽象方法。而非抽象类中是不可以有抽象方法的。

​ 我们就发现接口是最抽象的,其次是抽象类,最后是非抽象类。
​ 所以我们最顶层设计成接口,然后实现类设计成抽象类(实现部分抽象方法),抽象类的子类可以设计成非抽象类(对剩下的所有抽象方法进行实现)。

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

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

相关文章

Jenkins拉取github项目相关问题

1.私有仓库问题 1.1如果你的仓库是私有的,21年起github就不支持账号密码的方式拉取代码了 那么就需要在github上面创建一个token (classic) 然后在Jenkins代码设置那里 然后应该就可以顺利打包了。 2.找不到pom(多了一层文件夹)问题 解…

【Flink】Flink 处理函数之基本处理函数(一)

1. 处理函数介绍 流处理API,无论是基本的转换、聚合、还是复杂的窗口操作,都是基于DataStream进行转换的,所以统称为DataStreamAPI,这是Flink编程的核心。 但其实Flink为了更强大的表现力和易用性,Flink本身提供了多…

UE4_Mouse_Interaction——拖拽物体的实现

鼠标拖拽物体,效果如下图: 1、新建PlayerController,更名字为MI_PlayerController,双击打开并设置参数: 2、新建GameMode,更名为MI_Gameinfo。参数如下设置: 3、新建材质,更名为BasicAsset02.参…

matplotlib 绘图

matplotlib 绘图 方便设置legend图例的位置 ax1.legend(loc‘upper center’, bbox_to_anchor(0.3, -0.1)) ax2.legend(loc‘upper center’, bbox_to_anchor(0.6, -0.1)) import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm from scipy.inter…

【SpringCloud】Ribbon负载均衡

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …

3-zookeeper之ZAB协议

Zookeeper ZAB协议 概述 ZAB(Zookeeper Automic Broadcast)是一套专门为Zookeeper设计的用于进行原子广播和崩溃恢复的协议ZAB协议主要包含了两个功能 原子广播:保证数据一致性崩溃恢复:保证集群的高可用 ZAB协议本身是基于2PC算法来进行的设计&#…

JZ-7-201XMT跳位合位监视专用继电器 220VDC 板后接线,面板安装 JOSEF约瑟

系列型号: JZ-7Y-201XMT跳位合位监视继电器; JZ-7J-201XMT跳位合位监视继电器; JZ-7Y-203XMT跳位合位监视继电器; JZ-7J-203XMT跳位合位监视继电器; JZ-7Y-204XMT跳位合位监视继电器; JZ-7J-204XMT跳…

vue 窗口内容滚动到底部

onMounted(() > {scrollToBottom() }) // 滚动到底部方法 const scrollToBottom () > {// 获取聊天窗口容器let chatRoom: any document.querySelector(".chat-content");// 滚动到容器底部chatRoom.scrollTop chatRoom.scrollHeight; } 效果 聊天窗口代码…

python(一)网络爬取

在爬取网页信息时,需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫(即所有用户代理)。星号*是一个通配符,表示“所有”。 Disallow&…

docker 的mysql容器中没有mysqlbinlog

docker 的mysql容器中没有mysqlbinlog bug信息原因:阉割版mysql容器,构建者没有把mysqlbinlog当成必需工具,去掉了解决方法:验证成功删除无用的文件5.7开启binlog,(8 的默认开启了)5.7版本的mys…

如何在Win10使用IIS服务搭建WebDAV网站并实现无公网IP访问内网文件内容

文章目录 前言1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透,将WebDav服务暴露在公网3.1 安装cpolar内网穿透3.2 配置WebDav公网访问地址 4. 映射本地盘符访问 前言 在Windows上如何搭建WebDav,并且结合cpolar的内网穿透工具实现在公网访…

Nodejs 16与 gitbook搭建属于你自己的书本网站-第一篇

最近想重新搭建一个网站来存放自己的相关知识点,并向网络公开,有个hexo博客其实也不错的,但是总感觉hexo很多花里胡哨的玩意,导致挂载的博客异常卡,这样反而不利于我自己回顾博客了,于是我就开始钻研这个鬼…