Java|Java | 接口
接口的概念
接口,主要是用来描述类需要具有什么样的功能(方法),而不给出每个功能具体实现,把这些功能的实现交给实现该接口的类去实现,实现该接口的类必须实现该接口的所有方法(接口的静态方法跟默认方法除外)。
接口有以下几个特点:
- 接口中方法都默认且必须用
public
修饰的,因为是默认的所以可以省略不写。 - 接口中的域(属性)也是默认且必须用
public static final
修饰 - 接口跟抽象类一样不能实例化,可以声明变量
- 接口中不能有实例域也就是成员变量(ps:如果有违反了第二条, 接口不能被实例化有实例域也没啥意义)
- 实现接口时,必须将实现方法声明为
public
- 在 jdk 1.8 前接口不能有实现方法,之后就可以有了,可以用
static
跟default
声明实现方法。 - 可以用
instanceof
检查对象是属于某个一样的,去检查对象是否实现了某个接口。
interface
声明一个接口:package com.project;
public interface Person {
// 吃东西
void eat();
}
用
implements
实现一个接口package com.project;
public class Woman implements Person{@Override
public void eat() {
System.out.println("正在吃苹果");
}}
接口中的静态方法 接口中的静态方法必须写具体实现,且不被实现该接口的类继承,可以通过
接口名.方法名调用
类似于类的静态方法。用
static
声明一个静态方法package com.project;
public interface Person {
// 吃东西
public static void eat() {
System.out.println("正在吃苹果");
}
}
不需要也不能实现接口的静态方法
package com.project;
public class Woman implements Person{public static void main(String[] args) {
// 调用接口静态方法
Person.eat();
}
}
接口中的默认方法 默认方法提供了接口方法的默认实现,如果实现接口的类没有重写默认方法,那么采用默认实现。
跟静态方法不同的是,实现类会继承接口的默认方法,可以选择实现或者不实现。
package com.project;
public interface Person {
// 吃东西
public default void eat() {
System.out.println("人正在吃苹果");
}
}
默认方法冲突
如果两个接口方法名相同,有类实现类这两个接口的话,实现类必须覆盖。
如果接口跟父类方法名冲突,父类优先,接口方法会被忽略。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 调取接口时报404错误(ID:16)
- CICC(脑机接口,科幻几近成真())
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题