详解java接口基础知识附思维导图
作者:王小锤偏偏锤你 发布时间:2023-11-09 10:07:28
接口:
官方的含义是---->java接口是一系列方法的声明,是一些方法特征的集合
疑问:
那为什么不用抽象类呢?把他们共有的方法集合起来放在一个抽象类里面,同样可以调用哇,但是反过来想一想如果这些方法,不是同一个类,就比如飞这个方法,飞机有飞这个方法,蚊子有飞这个方法,如果让他连同时继承拥有飞这个抽象类里面,是不符合单一职责原则的,所以我们可以提供一个飞的接口,飞机,蚊子来实现这个接口,那么飞机和蚊子就拥有飞的能力啦,这是我对接口的理解
因为最近在学习java 面向对象中的接口,就画了思维导图:
这是我对接口知识的基本总结
举一个案例希望大家能理解接口!
现在有一个需求,有一个门door类,有一个防盗门AntiTheDoor类,有一个铁门IronDoor类,因为防盗门和铁门都有门的属性,所以二者
继承门door类
他们都有一个功能,就是上锁与开锁,还有一个防盗门独有的功能,就是猫眼CatEye功能,猫眼功能是防盗门独有的方法,所以应当把
猫眼看成一个接口,防盗门可以实现它,这样我们用代码怎么来诠释呢(定义与实现)
父类door
public abstract class Door {
/**
* 开门
*/
public abstract void open();
/**
* 关门
*/
public abstract void close();
}
接口:只写应该具有的功能
public interface CatEye {
/**
* 在使用接口的所有类中,需要实现接口中所有的方法
* 他们有这个功能,但是具体的实现放是不一样的,需要实现他的类在里面重新定义它新的生命,就比如,普通的防盗门里的猫眼就是简单的看
* 但是,还有一些猫眼的看有扫描的功能,不同的需求放在不同的类里面来具体的实现
*/
void look();
}
public interface Lock {
/**
* 上锁
*/
void upLock();
void downLock();
}
防盗门是门door的子类,继承父类开门关门的方法,同时拥有上锁,与猫眼的功能
public class AntiTheDoor extends Door implements Lock,CatEye{
@Override
public void look() {
System.out.println("防盗门的猫眼,伸头瞪眼");
}
@Override
public void upLock() {
// TODO 自动生成的方法存根
System.out.println("防盗门开锁:左转三圈");
}
@Override
public void downLock() {
// TODO 自动生成的方法存根
System.out.println("防盗门的关锁,右转三圈");
}
@Override
public void open() {
// TODO 自动生成的方法存根
System.out.println("防盗门的开门:用头顶");
}
@Override
public void close() {
// TODO 自动生成的方法存根
System.out.println("防盗门的关门:用脚蹬");
}
}
相比于防盗门,铁门只有上锁的功能
public class IronDoor extends Door implements Lock{
@Override
public void upLock() {
System.out.println("铁门的开锁,右转三圈");
}
@Override
public void downLock() {
System.out.println("铁门的上锁,左转三圈");
}
@Override
public void open() {
System.out.println("铁门的开门用脚蹬");
}
@Override
public void close() {
System.out.println("铁门的关门方式,用头顶");
}
}
测试类:
public class test {
public static void main(String[] args) {
AntiTheDoor atd = new AntiTheDoor();
atd.upLock();
atd.open();
atd.close();
atd.downLock();
}
}
运行结果:
防盗门开锁:左转三圈
防盗门的开门:用头顶
防盗门的关门:用脚蹬
防盗门的关锁,右转三圈
一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以有具体不同的能力.
以上所述是小编给大家介绍的java接口基础知识详解整合,希望对大家有所帮助。
来源:https://blog.csdn.net/lin2535290272/article/details/89059968
猜你喜欢
- 前言前面介绍了APP顶部导航栏AppBar,今天来介绍下Flutter实现APP底部导航栏。我们以仿写微信的底部导航栏来举例说明。要实现类似
- 示例 1 :使用搜索表单创建全屏模式我们要构建的小应用程序有一个应用程序栏,右侧有一个搜索按钮。按下此按钮时,将出现一个全屏模式对话框。它不
- 在java.lang.Runtime.exec的使用中,我们经常会用到将重定向命令执行的输入/结果或者将错误信息读取出来.那么,在使用过程中
- 相比于直线检测,直线拟合的最大特点是将所有数据只拟合出一条直线void fitLine( InputArray points, Output
- 一、synchronized 有不足新事物的出现要不是替代老事物,要么就是对老事物的补充JUC 的 locks 就是对 synchroniz
- 1、需要引入依赖<dependency> &l
- 目录1、IP地址2、端口3、通信协议3.1 TCP/IP协议簇:实际上是一组协议3.2 TCP UDP对比3.3 TCP实现聊天3.4 TC
- 目标效果: 点击动画按钮之后每张牌各自旋转 散开到屏幕上半部分的任意位置之后回到初始位置 比较像LOL男刀的技能动画 : )1: 创建卡牌对
- 因为涉及到 io 流输入问题,如果不关闭会一直占用资源。所以使用过后要及时关闭,防止资源一直被占用。Scanner在使用前要导入 java.
- 字段策略 0:”忽略判断”,1:”非 NULL 判断”),2:”非空判断”问题描述:当字段策略为 0 “忽略判断” 的时候,如果实体和数据库
- 这篇文章主要介绍了Java数组索引异常产生及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它
- 方法重载概述方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法互相构成重载* 多个方法在同一个类中* 多个放方法具有相同方
- 1.需求背景需要实现一个动态加载但不显示出来的视图,且该视图上有个动态生成的二维码,最后用其去生成一张快照(也就是图片)。(常见这种情况是来
- 在类中自定义的“函数”称为“方法”,由于C#是完全面向对象的
- PullToRefresh是一套实现非常好的下拉刷新库,它支持:1.ListView2.ExpandableListView3.GridVi
- 实例如下:import java.lang.reflect.Field;import java.lang.reflect.Invocatio
- 本文实例为大家分享了OpenCV实现人脸识别程序的具体代码,供大家参考,具体内容如下//Haar特征检测,人脸识别算法,是用xml作为训练后
- Servlet 实现文件上传所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务
- 目前常用的ORM框架有 Mybatis(batis)、MybatisPlus,Hibernate、Jpa等几个框架,今天就简单介绍一下搭建M