java接口学习_从零开始的Java学习记录(22)——接口与实现接口

24016ab1beef092d2f0f1e0ef7c78284.png内容概览

5a6248719eab539b6cda4d7ca48f5a7b.png

1.引用数据类型

之前有说过Java的基本数据类型共有8种,而引用数据类型几种则没有介绍,实际上引用数据类型只有3种,分别是:数组、类、接口。

前两种之前都有介绍过,今天来介绍3种引用数据类型的最后一种,接口。

8b22ab26ef493287a87a82da4f4b89c6.png

2. 接口

接口与抽象类有相似点,即一般都有抽象方法,但不同的是接口中的属性与方法有以下几点限制如想在接口中设置属性,但默认是被public static final修饰,且不能更改,即公开的静态常量,不过一般很少在接口中设置属性(作为初学者的我暂时还没遇到)。

接口中的方法一般为抽象方法,且默认为abstract public,且1.8版本之前是不能更改的。

1.8版本开始,接口中的方法可以为静态方法,abstract与static无法同时使用,因为abstract方法存在的目的就是被重写,而static方法却无法被重写(只能被隐藏),所以被static修饰的方法不能没有方法体。

1.8版本开始,还能被default(默认)修饰,在接口中被default修饰的方法同样不能抽象,这是为了在实现该接口的子类中有个不重写即可调用的默认方法,使代码有更好的维护性和扩展性。试想有成百个子类实现了一个接口,现在想在该接口中添加一个方法,成百个子类都重写吗,只要添加个default方法即可,需要重写的重写,不需要重写的默认。

aae14434020e8fe6cf8904c5ba1360cd.png接口

8b22ab26ef493287a87a82da4f4b89c6.png

3.接口的意义与实现接口

之前在继承一章中有提过,Java里只有单继承,而接口可以变相实现多继承。

举个例子,话说在某个异世界,人族(Human)与魔族(Demon)一同生活在东亚细亚大陆上,却势同水火,那么问题来啦,人族与魔族都有士兵与平民之分,人族士兵在继承人族这个父类的同时如何又继承士兵这个父类,这时我们可以让人族士兵继承人族这个父类又实现了战斗(CombatAble)这个接口,魔族同理。战场上只有实现了战斗(CombatAble)接口的才能进入,即人族士兵与魔族士兵,而人族城镇只有继承了人族(Human)父类可以进入,即人族士兵与人族平民。

254e1cc84658fe9749d647a701f68058.png类与接口

a70f36d33a717e5006595ca6c8c9339e.png实现接口

8b22ab26ef493287a87a82da4f4b89c6.png

4. 接口抽象类的异同

同:都不能被实例化

都可以有抽象方法,也可以没有抽象方法

子类可以向上转型为抽象类或接口

33431e1b7a5a95314b5be18398fadf5f.png相同点

异:继承为单继承,接口可以多个

接口无构造方法,抽象类有构造方法

如接口需设置属性只能有静态常量,抽象类属性不受限制

7523cffa0b31c65b0ad12baa7bd91c57.png不同点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。针对USB接口程序设计,我们需要先了解一些基础知识: 1. USB是什么? USB(Universal Serial Bus)是一种用于连接计算机与外部设备的串行总线标准,可用于数据传输、充电和供电等多种用途。 2. USB接口类型 USB接口按照接口类型分为USB Type-A、USB Type-B、mini-USB、micro-USB等多种类型。 3. USB接口规范 USB接口规范包括USB1.0、USB2.0、USB3.0等多个版本,每个版本都有自己的传输速度和功能特性。 在了解了上述基础知识后,我们可以开始设计USB接口程序。具体步骤如下: 1. 定义一个接口类Usb,在该类中定义一个抽象方法,用于实现数据传输功能。 ```java public interface Usb { void transferData(); } ``` 2. 定义一个USB设备类,该类实现了Usb接口,并实现接口中的抽象方法,用于实现具体的数据传输功能。 ```java public class UsbDevice implements Usb { @Override public void transferData() { System.out.println("USB设备传输数据"); } } ``` 3. 定义一个主机类,该类也实现了Usb接口,但是该类的transferData方法中不是实现传输数据的功能,而是调用USB设备类的transferData方法,从而实现数据传输。 ```java public class Host implements Usb { private Usb usbDevice; public Host(Usb usbDevice) { this.usbDevice = usbDevice; } @Override public void transferData() { usbDevice.transferData(); } } ``` 4. 在主函数中实例化USB设备类和主机类,并调用主机类的transferData方法,从而实现数据传输。 ```java public static void main(String[] args) { UsbDevice usbDevice = new UsbDevice(); Host host = new Host(usbDevice); host.transferData(); } ``` 这样,我们就完成了一个简单的USB接口程序设计。当然,实际情况中,USB接口程序可能会更加复杂,需要考虑更多的因素,例如不同类型的USB接口、不同版本的USB规范等等。同时,我们还需要注意USB接口程序的稳定性和可靠性,以确保程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值