Java关键字-interface

一、引入

接口就是规范,定义的是一组规则

继承是一个“是不是”的关系,而接口是一个“能不能”的关系

接口的本质是契约、标准、规范

二、如何定义接口

1、JDK8之前

全局常量:public static final 可以省略不写
抽象方法:public abstract

2、JDK8之后

全局变量
抽象方法
默认方法
静态方法

JDK8之后,接口中除了能定义全局常量、抽象方法、还可以定义静态方法、默认方法。

interface A{
    
    
    //常量	前面省略public static final
    int a;
    //抽象方法	前面省略public abstract
    void method1();
    //静态方法
    public static void method2(){
    
    
        System.out.println("接口中的静态方法")
    }
    //默认方法
    public default void method3(){
    
    
        System.out.println("接口中的默认方法")
    }
}

说明

  • 接口中定义的静态方法,只能通过接口调用

  • 接口中定义的默认方法可以被实现类重写,用实现类的对象调用

  • 类优先原则—如果子类(实现类)继承的父类和实现的接口有同名同参的方法,那么子类在没有重写此方法的情况下,默认调用的是父类同名同参的方法

  • 接口冲突—如果实现类实现了多个接口,并且多个接口之间有同名同参的默认方法,那么在实现类没有重写该方法的情况下,会报错

    解决方法是必须重写

三、接口的特点

  • 接口中不能定义构造器,定义的报错报错信息时
    Interfaces cannot have constructors

    意味着接口不能实例化

  • 开发中,接口通过让类实现的方式使用,

    类实现接口后,只能实现接口的所有抽象方法,或者将此类声明为抽象类。否则会报错

  • Java中类可以实现多个接口,弥补了类单继承的局限性

    举例包装类的声明格式

    public final class Integer
    extends Number
    implements Comparable<Integer>
    
  • 类和类之间的关系是继承

    类和接口之间的关系是实现

    接口和接口之间的关系是继承

  • 接口的使用体现多态性

public class USBTest {
    
    
	public static void main(String[] args) {
    
    
		Computer com = new Computer();
		USB flash = new Flash();
		com.tranfferDate(flash);
	}
}

class Computer{
    
    
	public void tranfferDate(USB usb) {
    
    
		usb.start();
		System.out.println("传输细节");
		usb.stop();
	}
}

interface USB{
    
    
	void start();
	void stop();
}

class Flash implements USB{
    
    
	@Override
	public void start() {
    
    
		System.out.println("Flash开始传输数据");
	}

	@Override
	public void stop() {
    
    
		System.out.println("Flash停止传输数据");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45321793/article/details/109495339