前言
接口就是多个类的公共规范。
一个对象拥有多种形态,这就是:对象的多态性
一、接口具体用法
接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。
定义接口基本格式:
public interface 接口名称{
// 接口内容
}
备注:换成关键字 interface 之后,编译生成的字节码文件仍然是: .java --> .class
接口使用步骤:
- 接口不能直接使用,必须有一个“实现类”来“实现”该接口。
格式:
public class 实现类名称 implements 接口名称{
// …
} - 接口实现类必须覆盖重写(实现)接口中所有的抽象方法。
实现:去掉abstract关键字,加上方法体大括号。 - 创建实现类对象,进行使用。
使用接口时,注意:
- 接口是没有静态代码块或者构造方法的。
- 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
格式:
public class 实现类 implements 接口A,接口B {
// 覆盖重写所有抽象方法
} - 如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
- 如果实现类没有覆盖重写所有接口当中的抽象方法,那么实现类就必须是一个抽象类。
- 如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
- 一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。
接口定义抽象方法
格式:
public abstract 返回值类型 方法名称(参数列表);
使用举例:
// 创建名为MyInterfaceAbstract的接口
public interface MyInterfaceAbstract {
// 抽象方法
public abstract void methodAbs1();
public void methodAbs2(); // 省略abstract
abstract void methodAbs3(); // 省略public
void methodAbs4(); // 省略 public abstract
}
// 接口实现类
public class MyInterfaceAbstractImpl implements MyInterfaceAbstract {
@Override
public void methodAbs1() {
System.out.println("这是第1个方法");
}
@Override
public void methodAbs2() {
System.out.println("这是第2个方法");
}
@Override
public