接口


Ctrl+1:快速修复

接口和类是同一个级别的概念
Java的数据类型:基本数据类型和引用数据类型
引用数据类型:类、接口、数组、枚举。。。

1.如何声明一个接口
语法格式:
【修饰符】 interface  接口名【extends 父类】 implements 接口们{
}
2.接口的成员有哪些?
JDK1.8之前
(1)全局的静态的常量:public static final
(2)公共的抽象的方法:public abstract

JDK1.8之后,接口的语法有改动:
增加了两类成员:
(1)静态方法:public static,public可以省略,但是static不可以省略。
通过“接口名.方法”来进行调用。
说明:接口的静态方法不会继承到实现类,不能用接口的实现类的对象调用。
(2)默认方法:public default,public可以省略,但是default不可以省略。
通过“实现类的对象.方法名”进行调用。
说明:实现类可以对接口的默认方法进行重写。

默认方法的冲突问题:
(1)当一个类实现了两个接口,这两个接口有方法签名相同的默认方法。
方法签名:修饰符 返回值类型 方法名 (形参列表)
如何解决?
》保留其中一个接口的默认实现
接口名.super.默认方法名(形参列表);
》完全重写该方法
(2)当一个类继承父类,又实现接口,这个父类中有与接口的默认方法的方法签名相同方法时
》默认保留的是父类的
》可以选择保留接口的默认实现
接口名.super.默认方法(形参列表);
(3)完全重写

什么情况下用默认方法?
当这个接口的某个抽象方法,在很多实现类中的实现代码是一样的,那么可以把这个实现挪到接口中,用默认方法进行实现。如果对该抽象方法不一样的实现的实现类,那么可以对该默认方法进行重写。重写的方法的default不要了。


说明:接口没有构造器,代码块,除了全局的静态常量以外的普通的属性等。

3.如何实现接口?
用来被实现的。
【修饰符】class 实现类 implements 接口们{
}

4.接口的特点
(1)实现类在实现接口时,必须实现接口的所有的抽象方法,否则这个实现类就必须是个抽象类。
(2)一个类可以同时实现多个接口
(3)接口不能直接创建对象
(4)接口可以与实现类的对象构成多态引用
(5)一个类可以同时继承父类,又实现接口,但是要求,继承在前,实现在后。
(6)接口与接口之间支持多继承

类与类之间:继承extends
类与接口之间:实现implements
接口与接口之间:继承extends
理解:
父类:亲生父亲,只有一个
接口:干爹,可以同时有很多个

原文地址:https://www.cnblogs.com/1185937986-jili/p/12865368.html