接口interface
1.接口定义格式
public interface 接口名称{
接口内容
}
1.1接口内容可以包括:常量,抽象方法,默认方法,私有方法,静态方法。
1.2接口没有静态代码块和构造方法。
1.3接口不能直接使用,必须有一个实现类implements 接口。
1.4接口的实现类必须覆盖重写(override)接口里的所有抽象方法——去掉abstract关键字,并加上方法体。
1.5如果该实现类没有覆盖重写接口里的所有抽象方法,那么该实现类必须是抽象类(class关键字前加abstract)。
public interface MyInterface {
public static final int NUM=10; //成员变量(常量)
public abstract void Method();//抽象方法
public default void Default(){ System.out.println("默认方法A"); } //默认方法
public static void StaticMethod(){ System.out.println("这是接口静态方法"); } //静态方法
private void PrivateMethod(){ System.out.println("私有方法"); }//私有方法
}
常量
接口中也可以定义“成员变量”,但是必须用 public static final 关键字修饰,并且必须赋值,一旦赋值就不能改变
常量名称完全大写,用下划线分隔。
默认方法
1.解决接口升级问题
2.接口的默认方法可以通过接口实现类的对象直接调用
3.接口实现类也可以覆盖重写接口默认方法
私有方法
接口里的私有方法分为
1.普通私有方法(解决多个默认方法的代码重复问题) private void 方法名称() {方法内容}
2.静态私有方法(解决多个静态方法的代码重复问题)private static void 方法名称() {方法内容}
静态方法
1.静态方法有方法体
2.静态方法应通过接口名称调用,不能通过接口实现类的对象调用
2.继承父类并实现多个接口
2.1如果实现类实现的多个接口中存在重复的抽象方法,那么只需要重写一次即可
2.2如果实现类没有覆盖重写所有接口的抽象方法,那么实现类必须是抽象类
2.3如果实现类实现的多个接口中存在重复的默认方法,那么实现类必须覆盖重写默认方法
2.4如果实现类的直接父类中的方法和接口中的默认方法产生冲突,优先调用直接父类的方法
3.接口之间的多继承
3.1 类与类之间是单继承的,直接父类只有一个。
3.2 类与接口之间是多实现的,一个类可以实现多个接口。
3.3 接口与接口之间是多继承的。
3.4 多个父接口的抽象方法如果重复,没关系。
3.5 多个父接口中的默认方法如果重复,那么子接口必须覆盖重写抽象方法{带有default关键字}。