java-接口知识的随手小记

1. 接口(Interface):

  在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法
接口可以理解为一种特殊的类,里面全部是由全局常量公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段

2. 接口的声明(定义):

格式:
 public interface 接口名称 {
  //接口内容:抽象方法
 }

3. 接口与类:

相似点:
  • 一个接口可以有多个方法
  • 接口编译生成的字节码文件仍然是 . java —> . class
区别:
  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

4. 接口特性:

  • 接口中每一个方法是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract, 其他修饰符都会报错)。定义接口中的抽象方法时可以省略public abstract 两个关键字。例如:public abstract void 方法名(); -----> void 方法名();
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类(实现类)来实现接口中的方法。

5. 接口的实现

5.1 接口中的抽象方法(abstract)的使用:
  • 定义一个接口
  • 定义一个【实现类】来实现该接口
  • 接口的实现类必须覆写该接口中的所有抽象方法
  • 创建实现类对象,进行使用
5.2 接口中的默认方法(default)的使用:
  • 可以通过接口实现类对象直接调用
  • 也可以被接口实现类覆写
5.3 接口中的静态方法(static )的使用:
  • 注意事项:不能通过接口实现类的对象来调用接口中的静态方法,而是通过接口名称直接调用其中的静态方法
  • 格式:接口名称 . 静态方法名(参数);
5.4 接口中的私有方法(private)的使用:(Java 9)
  • 注意事项:private的方法只有接口才能调用,不能用实现类或别人调用
5.5 接口中的常量(成员变量)的定义和使用:
  • 需要用 public static final 三个关键字修饰,
  • 格式:public static final 数据类型 常量名称 = 数值
  • 注意: 1. 一旦使用了final关键字,说明不可变 2. 必须给常量赋值 3. 常量名称使用大写(可用下划线分割)
    在这里插入图片描述
5.6 接口的代码演示:
//定义一个接口
public interface MyInterface {
    //接口中的抽象方法:public abstract(两个关键字)
    public abstract void method1();
    //抽象方法的省略格式
    void method2();

    //默认方法
    public default void DefaultMethod() {
        System.out.println("默认方法");
    }

    //静态方法
    public static void method3() {
        System.out.println("静态方法");
    }
    //常量定义和使用,可省略public static final关键字
    public static final int NUMBER_ONE = 10;
}
// 2. 定义一个实现类:关键字implements
// 3. 实现类必须覆写接口中的所有抽象方法
public class MyInterfaceImpl implements MyInterface {
    @Override
    public void method1() {
        System.out.println("方法1");
    }
    @Override
    public void method2() {
        System.out.println("方法2");
    }
}
public static void main(String[] args) {
    //接口中不能直接创建接口类的对象使用,必须创建实现类的对象进行使用
    MyInterfaceImpl impl = new MyInterfaceImpl();
    impl.method1();
    impl.method2();
    //调用默认方法,实现类中没有,就会向上找接口
    impl.DefaultMethod();
    /* impl.method3();// 报错:不能通过实现类对象来调用静态方法*/
    MyInterface.method3();  //通过接口类直接调用
    System.out.println(MyInterface.NUMBER_ONE); //直接通过接口来调用该成员变量
}
接口注意事项:
  • 接口中没有静态代码块或者构造方法
  • 一个类的直接父类是唯一的,但是一个类可以实现多个接口
    格式:
     public class 实现类名 implements 接口A,接口B{
      //覆写所有的抽象方法
    }
  • 如果实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆写一次即可
  • 如果实现类没有覆写所有接口中的所有抽象方法,那么实现类必须是一个抽象类
  • 如果实现类所实现的多个接口中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆写
接口知识的小案例(笔记本电脑):
public class Computer {
    public void powerOn() {
        System.out.println("电脑开机");
    }
    public void powerOff() {
        System.out.println("电脑关机");
    }
    //使用USB方法,将USB作为参数
    public void useUsb(USB usb) {
        usb.open();
        usb.close();
    }
    
    //定义一个USB接口
    public interface USB {
    public abstract void open();  //打开设备
    public abstract void close(); //关闭设备
    
    //定义一个鼠标类
    public class Mouse implements USB{
    @Override
    public void open() {
        System.out.println("打开鼠标");
    }
    @Override
    public void close() {
        System.out.println("关闭鼠标");
    }
    
    public class Main {
    public static void main(String[] args) {
        //创建一个电脑
        Computer computer = new Computer();
        computer.powerOn();

      /*  Mouse mouse = new Mouse();
        mouse.open();
        mouse.close();*/

        USB usb = new Mouse(); //多态
        computer.useUsb(usb);
        computer.powerOff();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值