Java接口(Interface)

比眉伴天荒 2024-03-31 08:21 193阅读 0赞

文章目录

        • 接口语法
        • 注意事项和细节
        • 实现接口VS.继承类
        • 接口的多态特性
        • 小练习

usb插槽就是现实中的接口。
你可以把手机,相机,u盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的,原因是做usb插槽的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等。

image-20221116114328607

image-20221116114431964

首先创建Usb接口 UsbInterface.java

  1. package src.interface_;
  2. public interface UsbInterface {
  3. public void start();
  4. public void stop();
  5. }

Camera.java

  1. package src.interface_;
  2. public class Camera implements UsbInterface {
  3. @Override
  4. public void start() {
  5. System.out.println("相机开始工作.......");
  6. }
  7. @Override
  8. public void stop() {
  9. System.out.println("相机停止工作");
  10. }
  11. }

Phone.java

  1. public class Phone implements UsbInterface {
  2. @Override
  3. public void start() {
  4. System.out.println("手机开始工作....");
  5. }
  6. @Override
  7. public void stop() {
  8. System.out.println("手机停止工作.....");
  9. }
  10. }

最后我们模拟电脑工作时候的流程, 插入设备开始 - 然后结束

  1. package src.interface_;
  2. public class Computer {
  3. public void work(UsbInterface usbInterface) {
  4. usbInterface.start();
  5. usbInterface.stop();
  6. }
  7. }

我们实例化各个类试试 TestInterface.java

  1. package src.interface_;
  2. public class TestInterface {
  3. public static void main(String[] args) {
  4. Camera camera = new Camera();
  5. Phone phone = new Phone();
  6. // 创建计算机
  7. Computer computer = new Computer();
  8. // 模拟把相机插入电脑
  9. computer.work(camera);
  10. // 模拟把手机插入电脑
  11. computer.work(phone);
  12. }
  13. }
接口语法
  1. interface 接口名{
  2. //属性
  3. //方法
  4. }
  5. class 类名 implements 接口{
  6. 自己属性;
  7. 自己方法;
  8. 必须实现的接口的抽象方法;
  9. }

在jdk7.0前, 接口里的所有方法都没有方法体;

jdk8.0后接口类可以有静态方法, 默认方法, 也就是说接口中可以有方法的具体实现.

对初学者讲理解接口的概念不算太难,难的是不知道什么时候使用接口,下面我例举几个应用场景:

1.说现在要制造战斗机,武装直升机.专家只需把飞机需要的功能/规格定下来即可,然后让别的人具体实现就可。

2.说现在有一个项目经理,管理三个程序员,功能开发一个软件为了控制和管理软件项目经理可以定义一些接口,然后由程序员具体实现。

c0b3e127bb1f409790d33cd6469b9a69.png
实际要求: 3个程序员, 编写三个类,分别完成对Mysql,Oracle,DB2数据库的连接connect, close…

注意事项和细节
  1. 接口不能被实例化
  2. 接口中所有的方法是public方法, 接口中抽象方法可以不用abstract修饰
  3. 一个普通类实现(implements)接口,就必须将该接口的所有方法都实现
  4. 抽象类实现接口, 可以不用实现接口的所有方法
  5. 一个类可以同时实现多个接口
  6. 接口中的属性只能是final的, 而且是public static final修饰符
  7. 接口中属性的访问形式:接口名.属性名
  8. 接口不能继承其他的类, 但是可以继承多个别的接口
  9. 接口的修饰符只能是public和默认, 这点和类的修饰符是一样的
实现接口VS.继承类

继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这些方法。即更加的灵活…

接口比继承更加灵活, 继承是满足is - a的关系,而接口只需满足like - a的关系

接口在一定程度上实现代码解耦[即:接口规范性+动态绑定]

接口的多态特性

在前面的Usb接口案例,UsbInterface usb ,既可以接收手机对象,又可以接收相机对象,就体现了接口多态(接口引用可以指向实现了接口的类的对象)

演示一个案例:给Usb数组中,存放Phone和相机对象,Phone类还有一个特有的方法call() ,请遍历Usb数组,如果是Phone对象,除了调用Usb接口定义的方法外,还需要调用Phone特有方法call.

接口存在多态传递现象.

小练习
  1. interface A {
  2. int x = 0;// 等价于 public static final int x=0
  3. }
  4. class B {
  5. int x = 1;// 普通属性
  6. }
  7. public class C extends B implements A {
  8. public void pX() {
  9. // System.out.println(x); //错误,x不明确
  10. // 可以明确的指定x
  11. // 访问接口的x就是用A.x
  12. // 访问父类的x就是用super.x
  13. System.out.println(A.x + " " + super.x);
  14. }
  15. public static void main(String[] args) {
  16. new C().pX();
  17. }
  18. }

image-20221116164910210

发表评论

表情:
评论列表 (有 0 条评论,193人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java接口interface

    接口只有规范,自己无法写方法。 接口就是规范,定义的是一组规则。 接口的本质是契约,就像法律一样,制定好后大家都遵守 OO的精髓,是对对象的抽象,最能体

    相关 java 接口interface

    1、 接口的概念 抽象类可以理解为是从多个类中抽象出来的模板,不但允许有抽象方法,还可以有变量和普通方法等。如果抽象的更彻底,只留下常量和抽象方法,则此时的抽象类有了

    相关 interface接口

    当类中的方法都是抽象方法, 接口格式特点: 1、接口中可以定义常量和抽象方法。 2、接口中成员有固定修饰符:       常量:public static final 

    相关 接口interface

    什么是接口? 一种把类抽象的更彻底,接口里只能包含抽象方法的“特殊类”。接口不关心类的内部状态数据,定义的是一批类所遵守的规范。(它只规定这批类里必须提供某些方法,提供这