接口

发布时间 2023-09-06 11:59:40作者: Monlogue

接口

微信图片_20230818082816

 

接口的定义与特点

接口用关键字interface来定义

/*

声明了一个接口:体现一种规范,规范一定是公开的

*/

public interface InterfaceDemo{

        //常量

        //抽象方法

        //目标 :了解接口中的成分贴点,JDK 1.8之前接口中只能有抽象方法和常量

        //1.常量

        //public static final String SCHOOL_NAME = "SMY";

        String SCHOOL_NAME = "SMY";

        //2.抽象方法

        //注意:由于接口体现规范思想,规范默认都是公开的,所以代码层面 public abstract final可以省略不写

        //public abstract void run();

        void run();

}

 

 

什么是接口

接口也是一种规范

接口的基本使用:被实现

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

 

public class MyClass implements interface01,interface02,interface03,{

 

}

实现的关键字:implements

 

从上面可以看出

接口可以被类单实现 , 也可以被类多实现

 

接口实现的注意事项:

一个类实现接口,必须重写全部接口的全部抽象方法,否则这个类需要定义成抽象类

 

基本小节

类和类的关系:单继承

类和接口的关系:多实现

接口和接口的关系:多继承,一个接口可以同时继承多个作用

接口与接口的关系:多继承

 

接口多继承的作用

规范合并,整合多个接口为同一个接口,便于子类实现

 

JDK8开始接口新增方法

原因:项目v1.0上线没问题

项目v2.0要加新的方法,此时改了接口就要所有的实现类实现这些方法

允许接口中直接定义带有方法体的方法

第一种:默认方法

类似之前写的普通实例方法:必须用default修饰

默认会public修饰,需要用接口的实现类的对象来调用//因为接口不可创建对象

default void run(){

System.out.println("--开始跑--")

}

 

第二种:静态方法

默认会public修饰,必须static修饰

注意:接口的静态方法必须用本身的接口名来调用

static void inAddr(){

System.out.println("我在学接口中的静态方法")

}

 

第三种:私有方法

就是私有的实例方法:必须使用private修饰

从JDK1.9才开始有的

只能在本类中被其他的默认方法或者私有方法访问

 

private void go(){

System.out.println("--准备--")

}

 

自己在开发中很少使用,通常是java源码涉及到

使用接口的注意事项

接口绝对不能创建对象//接口是更加彻底的抽象

一个类实现多个接口,多个接口中有同样的静态方法不冲突//根本不可能用类去调用接口中的静态方法

一个类继承了父类,同时又实现了接口,父类中的接口中有同名方法的,默认用父类的//就近原则,父类离他更近,接口也不能继承父类

一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可//类会冲突,接口为了维护自己多继承的机制,让子类可以重写,这种情况下不能使用任何已经实现的接口中的默认方法,只能自己重写

一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承

 

一句话总结:

定义接口,描述功能,如果有人要用,实现接口