Java进阶----接口interface

时间:2024-07-09 07:25:49

接口

接口概述

  • 接口是一种规范,使用接口就代表着要在程序中制定规范.

制定规范可以给不同类型的事物定义功能,例如:

  • 利用接口,给飞机、小鸟制定飞行规范,让其都具备飞行的功能;
  • 利用接口,给鼠标、键盘、音响制定连接规范,让其都具备连接的功能;

接口制定规范通常只规定有哪些功能,不限制功能的具体内容。需要由遵循规范的事物自己去实现,例如:

  • 飞行规范只是让飞机、小鸟具备飞行的功能,但具体怎么飞,由它们自己决定
  • 连接规范只是让鼠标、键盘、音响都拥有可以被连接的功能,但具体怎么连接,由它们自己决定

接口的定义格式

public interface Inter {   
	// 常量
    // 抽象方法
 }

注意:

  1. 接口中的变量必须是常量,默认被 public static final 修饰
  2. 接口中的方法默认是抽象方法,默认被 public
    abstract
    修饰
  3. 接口不能创建对象

接口的使用方式

接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类

  • 接口可以被类单实现,也可以被类多实现
  • 注意:一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类
修饰符 class 实现类 implements 接口1, 接口2, 接口3 , ... {
      ……
}

接口和抽象类的区别

  1. 一个类只能继承一个抽象类,一个类可以实现多个接口。
  2. 继承父类和实现接口并不冲突,可以同时使用。
  3. 功能上:抽象类是对同一类型事物的抽取
    (例如:猫和狗),接口是对不同类型事物具有相同行为的规范。
    实例1:
public class Demo01 {
    public static void main(String[] args) {
        //需求:定义一个数学接口MathInter,给其定义成员变量PI(圆周率)和成员方法add(加法)
        //1.定义好接口后,尝试创建MathInter对象,代码报错(接口不能创建对象)
        //new MathInter();

        //2.使用MathInter提供的圆周率
        System.out.println(MathInter.PI);

        //3.尝试修改圆周率
        //MathInter.PI = 6.66;

        //4.要想使用接口,需要定义类去实现接口
        //定义Computer电脑类,实现Math数学接口

        //5.创建实现类对象,调用重写的方法
        Computer computer = new Computer();
        computer.add(1, 2);

        //6.需求:再定义一个播放接口PlayerInter,制定播放规范,让Computer去实现
        computer.play();
    }
}
public interface MathInter {

    //2.要求有圆周率提供给其他人使用
    //public static final double PI = 3.14;
    //注意:接口中的成员变量只能是常量,默认被 public static final
    double PI = 3.14;

    //3.要求有加法
    //public abstract void add(int a, int b);
    //接口中的方法默认就被 public abstract修饰
    void add(int a, int b);
}
public interface PlayerInter {
    void play();
}
public class Computer implements MathInter, PlayerInter {
    //2.类实现接口,必须要重写接口的所有抽象方法!
    @Override
    public void add(int a, int b) {
        System.out.println("加法结果:" + (a + b));
    }

    @Override
    public void play() {
        System.out.println("播放小视频");
    }
}

实例二:
定义USB接口制定规范,要求所有USB设备都拥有接入(connect)和断开(disconnect)功能

  • 定义Mouse鼠标类和Keyboard键盘类,要求实现USB接口,遵循USB制定的规范
  • Mouse鼠标的特有功能:点击(click)
  • Keyboard键盘的特有功能:打字( typewrite )

1.定义UsbInter接口,制定规则:接入(connect)和断开(disconnect)

public interface UsbInter {
    void connect();
    void disconnect();
}

2.定义鼠标Mouse类和键盘Keyboard类作为接口实现类,重写接口的方法

public class Keyboard implements UsbInter {
    @Override
    public void connect() {
        System.out.println("接入键盘");
    }

    @Override
    public void disconnect() {
        System.out.println("断开键盘");
    }

    //2.特有功能:打字
    public void typewrite() {
        System.out.println("键盘敲烂,月薪过万!");
    }
}

public class Mouse implements UsbInter{
    @Override
    public void connect() {
        System.out.println("鼠标连接");
    }

    public void Click(){
        System.out.println("鼠标点击");
    }

    @Override
    public void disconnect() {
        System.out.println("鼠标断开");
    }

}

3.分别创建Mouse鼠标对象和Keyboard键盘对象

public class Demo02 {
    public static void main(String[] args) {
  
        Mouse mouse = new Mouse();
        Keyboard keyboard = new Keyboard();

        //依次调用usb的接入方法、各自特有的方法、usb的断开方法
        mouse.connect();
        mouse.click();
        mouse.disconnect();
        System.out.println("-----------------");

        keyboard.connect();
        keyboard.typewrite();
        keyboard.disconnect();
    }
}