Java——接口
一、介绍
- 接口是Java语言中的一种引用类型(其他的引用类型有数组、类、String、集合...)
- 接口,和类属于同一级别
- 接口,可以理解为是方法的集合体(接口中通常就是用来定义方法的)
- 接口中封装的就是抽象方法(JDK1.7之前)
- 从JDK1.8开始,接口中增加了:静态方法、默认方法
- 从JDK1.9开始,接口中增加了:私有方法
- 接口,不能实例化(不能创建对象)[接口中没有构造方法]
二、接口的定义
使用关键字interface关键字来定义接口
格式为: interface 接口名{...}
public interface Test {
// 接口中的成员
}
三、接口中的成员
JDK1.8之前只能定义静态常量和抽象方法
public interface Test {
// 静态常量
public static final int NUMBER = 100; // 常量名通常全大写
// 抽象方法
public abstract void method();
}
JDK1.8添加了静态方法、默认方法
// 接口的命名方式:大驼峰
public interface Test {
// 静态常量
// ...
// 抽象方法
//...
//默认方法
public default int addNum(int n){
return n + 1;
}
// 静态方法
public static void method(){
}
}
JDK1.9添加了私有方法
// 接口的命名方式:大驼峰
public interface Test {
// 静态常量
// ...
// 抽象方法
// ...
//默认方法
// ...
// 静态方法
// ...
//私有方法
private boolean isOpen(){
return false;
}
}
小结一下,接口中可以书写的内容
- 静态常量
- 抽象方法
- 静态方法
- 默认方法
- 私有方法
四、接口的基本使用
在Java语言中接口不能实例化,需要定义一个子类来实现(继承)接口,通过实例化子类对象,来访问接口的成员。
子类实现接口,使用关键字:implements
在子类实现接口之后,必须对接口中的抽象方法进行重写
举例如下
// Hello.java 定义接口
public interface Hello {
// 静态常量
public static final int NUMBER = 100;
// 抽象方法
public abstract void method(int num);
}
// Child.java 子类实现接口
public class Child implements Hello {
// 重写抽象方法
@Override
public void method(int num){
// 方法体代码
System.out.println(num);
}
}
// Test.java 测试类调用方法
public class Test {
public static void main(String[] args) {
// 实例化子类对象
Child child = new Child(); // 使用对象本身类型来定义
child.method(100); // 调用重写后的方法 打印100
// 多态的体现
Hello h = new Child(); // 使用对象的父类型来定义
h.method(200); // 调用重写后的方法 打印200
}
}
调用接口中默认方法的例子如下
// Hello.java
public interface Hello {
// 默认方法
public default void show(){
System.out.println("我是接口中的默认方法");
}
}
// Child.java 子类实现接口
public class Child implements Hello {
}
// Test.java
public class Test {
public static void main(String[] args) {
Child child = new Child();
child.show(); // 我是接口中的默认方法
}
}
获取接口中常量的例子如下
// Hello.java
public interface Hello {
// 静态常量
public static final String CITY = "合肥";
}
// Test.java
public class Test {
public static void main(String[] args) {
Child child = new Child();
System.out.println(Hello.CITY); // 合肥
}
}

浙公网安备 33010602011771号