详解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


猜你喜欢
- 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类
- 本文讲述了Java递归运行的机制:递归的微观解。分享给大家供大家参考,具体如下:前言:在java递归基础与递归的宏观语意和java链表的天然
- 先给大家展示下关于仿支付宝钱包首页中带有分割线的gridview,俗称九宫格 的效果图,怎么样是不是和你想象的一样啊。在你的预料之中就继续访
- 在IntelliJ IDEA中一不小心将你本地代码给覆盖了,这个时候,你 ctrl + z
- 使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是。iTextSharp
- 1.UUID 简介UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准。也
- Future接口是Java标准API的一部分,在java.util.concurrent包中。Future接口是Java线程Future模式
- 没有接触过音乐字幕方面知识的话,会对字幕的实现比较迷茫,什么时候转到下一句?看了这篇文章,你就会明白字幕so easy。先来一张效果图:字幕
- 本实例是为了实现在管理后台实现微信菜单的添加删除管理。1、首先我们需要新建一个数据库表用于存放menu菜单项可包含的字段有id、父类id、n
- /* * 绘制0°到360°的正弦曲线 * 分两种情形,y>0和y<=0进行绘制 * 每种情形中要
- 下面随笔说明函数指针用法。函数指针的定义:定义形式:存储类型 数据类型 (*函数指针名)()含义:函数指针指向的是程序代码存储区函数指针的典
- 今天整理之前的代码,忽然看到之前自己写的一个刮刮卡,整理下以便以后使用,同时分享给需要的朋友,如有错误,还请多多指正。实现的步骤,其实就是徒
- Java是面向对象的编程语言,在我们开发Java应用的程序员的专业术语里,Java这个单词其实指的是Java开发工具,也就是JDK(Java
- 本文实例为大家分享了Androidstudio调用摄像头拍照并保存照片的具体代码,供大家参考,具体内容如下首先在manifest.xmlns
- 基本概念Java中创建对象时,一旦程序终止,创建的对象可能就不存在.要想使得对象能够在程序不运行的状态下依然能够保存对象的信息,这时就需要用
- 最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下。在我刚开始工作接触的项目
- 在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。
- 导语关于<resultMap>标签映射,<association>&<collection>的使用什么时候用<resultMap>标签映射1
- java读写ini文件、FileOutputStream在上课让学生练习文件读写,就让他们做了一个使用文件保存账号和密码的练习,有一个比较爱
- 前言在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见